关于python:我的deepcopy在这种情况下不工作

my deepcopy does not work in this situation

据我所知,copy.deepcopy复制目标对象中包含的对象。

但我的代码在这种情况下不起作用。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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

结果表明,blist_valuealist_value相同。

[10, 2, 3, 4, 5]

[10, 2, 3, 4, 5]

我所期望的是,只有alist_value发生了变化。

迪普复制有什么我错过的吗?


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

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