据我所知,copy.deepcopy复制目标对象中包含的对象。
但我的代码在这种情况下不起作用。
import copy
class MyClass(object):
list_value = [1, 2, 3, 4, 5]
def __init__(self, name):
self.name = name
a = MyClass('a')
b = copy.deepcopy(a)
a.list_value[0] = 10
print a.list_value
print b.list_value
输出结果显示list_value
实例的b
与list_value
的{{1}}相同。
[10,2,3,4,5]
[10,2,3,4,5]
我的预期是a
仅list_value
更改。
我是否有任何遗漏深度镜检查的事情?
答案 0 :(得分:3)
list_value
是类MyClass
的所有对象实例共享的class attribute。因此,即使您指定a.list_value[0]
,list_value
和a
的{{1}}也是相同的。最好更改构造函数以将其添加为特定对象实例的属性:
b