我正在审查一些旧的python代码并经常遇到这个'模式':
class Foo(object):
def __init__(self, other = None):
if other:
self.__dict__ = dict(other.__dict__)
这是复制构造函数通常如何在Python中实现的吗?
答案 0 :(得分:4)
这是一种将所有属性从一个对象复制到另一个对象的方法。但请注意:
__init__
方法的对象可以是任何类型(与正在创建的对象的类型不同)。答案 1 :(得分:4)
请注意,不会复制属性,它们是共享。
>>> a = Foo()
>>> a.x=[1,2,3]
>>> b = Foo(a)
>>> b.x[2] = 4
>>> a.x
[1, 2, 4]