好的...也许这是一个愚蠢的问题...但我现在找不到答案!
我需要实现一个对象的复制,我希望所有的属性都被复制,除了一两个我想要完全控制复制的属性。
以下是对象的标准复制行为:
>>> class test(object):
... def __init__(self, arg):
... self._a = arg
...
>>> t = test(123999)
>>> t._a
123999
>>> tc = copy.copy(t)
>>> tc._a
123999
这基本上意味着所有属性都被复制。我想要做的是以以下方式重用此行为:
>>> class test(object):
... def __init__(self, arga, argb):
... self._a = arga
... self._b = argb
...
... def __copy__(self):
... obj_copy = copy.copy(self) #NOT POSSIBLE OF COURSE => infinite recursion
... obj_copy._b = my_operation(obj_copy._b)
... return obj_copy
我希望你能理解我的意思:我想要重用对象复制行为,但是插入自己的操作。有没有一种干净的方法来做到这一点(而不必做
for attr_name in dir(self): ...
)?