我想知道为什么在下面的代码片段中,复制对象b
中的属性的行为不同b.lst
产生a.lst
的更新值,但是b.str
仍然保留分配给a.str
的原始值。为什么会这样
>>> import copy
>>> class A(object):
... pass
...
>>> a = A()
>>> a.lst = [1, 2, 3]
>>> a.str = "Hola"
>>> b = copy.copy(a)
>>> a.lst.append(4)
>>> a.str = "Adios"
>>> print b.lst
[1, 2, 3, 4]
>>> print b.str
Hola
根据[Python 3.Docs]: copy.copy(x)(强调是我的):
要真正复制列表(或任何可变对象),请改用
copy.deepcopy
相关问题 更多 >
编程相关推荐