这相当于Python中的复制构造函数吗?

时间:2012-02-03 16:45:45

标签: python

我正在审查一些旧的python代码并经常遇到这个'模式':

class Foo(object):
    def __init__(self, other = None):
        if other:
            self.__dict__ = dict(other.__dict__)

这是复制构造函数通常如何在Python中实现的吗?

2 个答案:

答案 0 :(得分:4)

这是一种将所有属性从一个对象复制到另一个对象的方法。但请注意:

  • 传递给__init__方法的对象可以是任何类型(与正在创建的对象的类型不同)。
  • 仅复制对象属性(类属性和方法不复制)。

答案 1 :(得分:4)

请注意,不会复制属性,它们是共享

>>> a = Foo()
>>> a.x=[1,2,3]
>>> b = Foo(a)
>>> b.x[2] = 4
>>> a.x
[1, 2, 4]