我有以下课程
class CommandList( HasTraits ):
command_nr = Int
command_code = Int
command_name = Str
status = Int
settings = None #It will be a list[dic{list[]}]
我是usind copy.deepcopy
来克隆类
a = copy.deepcopy(b)
但是当我更改a
中的设置变量时,它会影响b
变量。似乎deepcopy没有克隆这个变量。我读到可以覆盖__deepcopy__
函数。这是个好主意吗?我怎么能这样做?
答案 0 :(得分:0)
这符合我记录的文件:
import copy
class Ex(object):
clvar='foo'
def __init__(self,i):
self.i=i
def __repr__(self):
return 'clvar={}, self.i={}'.format(self.clvar,self.i)
ex1=Ex(1)
ex2=Ex(2)
excopy1=copy.deepcopy(ex1)
excopy2=copy.deepcopy(ex2)
print ex1,ex2
print excopy1,excopy2
excopy1.i=22
excopy1.clvar='bar'
print ex1,excopy1
class Ex2(Ex):
pass
ex2_2=Ex2(222)
print ex2_2
打印:
clvar=foo, self.i=1 clvar=foo, self.i=2
clvar=foo, self.i=1 clvar=foo, self.i=2
clvar=foo, self.i=1 clvar=bar, self.i=22
clvar=foo, self.i=222
“复制”类定义的唯一方法是通过继承。您可以使用deepcopy复制实例,但最好是编写复制方法来处理实例详细信息。