2012-02-03 64 views
5

我回顧了一些舊的Python代碼來到這個防空火炮「模式」頻繁:這是相當於Python中的拷貝構造函數嗎?

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

請問這是怎麼拷貝構造函數通常是用Python實現?

+6

相關:http://stackoverflow.com/questions/1241148/copy-constructor-in-python – 2012-02-03 16:48:52

回答

4

這是一種將所有屬性從一個對象複製到另一個對象的方法。然而注意的是:

  • 對象傳遞給__init__方法可具有任何類型(不是同一類型的對象被創建)。
  • 只複製對象屬性(不屬於類屬性和方法)。
4

請注意,屬性不會被複制,它們是共享

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