我意识到已经提出了与此非常相似的问题,尽管不完全是这样。
我想为我的类的构造函数有一个可选参数,如果它是我的类的实例,将被复制。例如,类似(我知道这段代码不起作用!):
class Foo(object):
def __init__(self, foo=None):
self.x = None
self.y = None
self.z = None
if foo is not None and isinstance(foo, Foo):
self = copy.deepcopy(foo)
a = Foo()
a.x = 1
a.y = 2
a.z = 3
b = Foo(a)
print b.x
print b.y
print b.z
我知道有一些实用的解决方案。我可以根据 foo 对应属性的值来设置 self 的每个属性,但这真的很烦人,因为我的类有很多很多属性。或者我可以简单地使用 do:
b = copy.deepcopy(a)
...但如果可能的话,我宁愿不这样做。我也希望避免压倒一切__new__
。
python中真的没有像样的方法来创建复制构造函数吗?