Python 我的deepcopy在这种情况下不起作用

Python 我的deepcopy在这种情况下不起作用,python,copy,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_val

据我所知,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\u值
实例与
a的
list\u值
相同

[10,2,3,4,5]

[10,2,3,4,5]

我所期望的是,只有
a
list\u值发生了变化


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

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

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

啊。。。那么,我应该只在类字段中放置共享变量吗?你能解释一下“所有实例共享”是什么意思吗?另外,请提供有关此现象的文档链接。@Flyte,@Juniorcompressor我将代码更改为
Juniorcompressor
,现在没有问题了。@Flyte:每次制作类
MyClass
的内容时,它都将具有相同的列表
list\u值
。通过任何对象对
list\u值
所做的更改将更改所有对象的
list\u值
。这里有一个讨论@Joel,根据讨论,
MyClass
实例的
list\u值
将作为共享属性工作,只要没有关于
list\u值
的替换操作?