Python: deepcopy does not work on user-defined classes?

放肆的年华 提交于 2019-11-28 07:25:24

问题


In the following example I would expect deepcopy to create a copy of field and not just copy the reference. What happens here and is there an easy way around it?

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

Output:

[(5, 10)]
[(5, 10)]

回答1:


Deep copying (by default) only applies to instance level attributes - not class level - It doesn't make much sense that there's more than one unique class.attribute...

Change your code to:

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


来源:https://stackoverflow.com/questions/18364284/python-deepcopy-does-not-work-on-user-defined-classes

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!