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

my deepcopy does not work in this situation

据我所知,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

输出是说 b 实例的 list_valuea 实例的 list_value 相同。

[10, 2, 3, 4, 5]

[10, 2, 3, 4, 5]

我期望的是 list_value 只有 a 的变化。

关于 deepcopy 有什么我遗漏的吗?

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

 def __init__(self, name):
      self.name = name
      self.list_value = [1, 2, 3, 4, 5]