假设我有一个类的实例foo,带有一些变量foo.x.现在我想制作一份foo:
bar = foo
当我现在改变bar.x时,这也改变了foo.x.我如何获得foo的副本,我可以在不更改原始foo的情况下更改所有内容?创建一个新的Class实例不是一个选项,因为我需要它处于foo已经存在的状态。
答案 0 :(得分:5)
您需要使用模块副本。
bar = copy.deepcopy(foo)
答案 1 :(得分:4)
您可以使用deepcopy
:
bar = deepcopy(foo)
答案 2 :(得分:1)
请注意,您还可以通过以下方式实现自定义(确定,如果您确实需要)行为的副本:
from copy import copy
class d(object):
def __copy__(self):
newd = d()
newd.x = self.x+1
return newd
foo = d()
foo.x = 11
a = copy(d)
print a.x, foo.x
答案 3 :(得分:0)
bar = copy.copy(foo)#制作foo的浅表副本
bar = copy.deepcopy(foo)#制作foo的深层副本
拷贝(x)的 对任意Python对象进行浅拷贝操作。
deepcopy(x,memo = None,_nil = []) 对任意Python对象进行深层复制操作。