【问题标题】:Deepcopy a simple Python object深度复制一个简单的 Python 对象
【发布时间】:2009-12-19 17:44:12
【问题描述】:

我有一个定义__deepcopy__ 方法的对象。我想要一个函数,它不是通过它提供的方法进行深度复制,而是以默认方式复制 object 类的对象。

我怎么能这样做?我想我可以尝试编写代码,但可能有很多我不会想到的“陷阱”。

我这样做的原因是因为我有一个实现__deepcopy__ 方法的对象类,并且该方法会检查某些条件,并且在某些情况下它会以某种方式深度复制对象,而在其他情况下在这种情况下,它将以默认的object 方式进行深度复制。

【问题讨论】:

    标签: python deep-copy


    【解决方案1】:

    您基本上需要覆盖现有的__deepcopy__ 方法,这意味着暂时将对象的类设置为不同的东西——这是否可以接受基本上取决于“__deepcopy__ 覆盖”是否只需要影响一个,“顶部- level" 对象(在这种情况下,kludge 可能没问题),或者如果您正在复制的图表中有许多该类的对象,在这种情况下,它会很混乱。哪种情况获得?

    【讨论】:

    • 我认为树中有该类的多个对象,抱歉。另外,一想到要更改对象的类,我就害怕!