Python:deepcopy不适用于用户定义的类?

Python:deepcopy不适用于用户定义的类?,python,deep-copy,Python,Deep Copy,在下面的示例中,我希望deepcopy创建字段的副本,而不仅仅是复制引用。这里发生了什么?有没有简单的方法 from copy import deepcopy class Test: field = [(1,2)] t1 = Test() t2 = deepcopy(t1) t2.field[0]=(5,10) print t1.field # [(1,2)] expected but [(5,10)] obtained print t2.field # [(5,10)] exp

在下面的示例中,我希望deepcopy创建字段的副本,而不仅仅是复制引用。这里发生了什么?有没有简单的方法

from copy import deepcopy

class Test:
    field = [(1,2)]

t1 = Test()
t2 = deepcopy(t1)

t2.field[0]=(5,10)

print t1.field # [(1,2)] expected but [(5,10)] obtained
print t2.field # [(5,10)] expected
输出:

[(5, 10)]
[(5, 10)]
深度复制(默认情况下)仅适用于实例级属性,而不适用于类级属性。存在多个唯一的
class.attribute

将代码更改为:

class Test:
    def __init__(self):
        self.field = [(1,2)]

除非他覆盖了
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
/
\uuuuuuuuuuuuuuuu。尽管如此,这还是很奇怪。这实际上不是问题的答案,而是问题的解决办法。如果您不想/无法在任何情况下实例化该类,例如:您有一个
@classmethod
,则无法应用此解决方法…可能重复