python中的类副本

时间:2011-06-29 08:05:15

标签: python

假设我有一个类的实例foo,带有一些变量foo.x.现在我想制作一份foo:

bar = foo

当我现在改变bar.x时,这也改变了foo.x.我如何获得foo的副本,我可以在不更改原始foo的情况下更改所有内容?创建一个新的Class实例不是一个选项,因为我需要它处于foo已经存在的状态。

4 个答案:

答案 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对象进行深层复制操作。