我的深度复制在这种情况下不起作用

时间:2015-04-20 08:55:40

标签: python copy

据我所知,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实例的blist_value的{​​{1}}相同。

  

[10,2,3,4,5]

     

[10,2,3,4,5]

我的预期是alist_value更改。

我是否有任何遗漏深度镜检查的事情?

1 个答案:

答案 0 :(得分:3)

list_value是类MyClass的所有对象实例共享的class attribute。因此,即使您指定a.list_value[0]list_valuea的{​​{1}}也是相同的。最好更改构造函数以将其添加为特定对象实例的属性:

b