Python 我的deepcopy在这种情况下不起作用
据我所知,copy.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
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值
的替换操作?