2012-02-03 23 views
5

bazı eski piton kodunu inceleyerek ve sık sık bu 'desen' genelinde geldi ediyorum:Bu, Python'daki bir kopya oluşturucunun karşılığı mı?

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

bir kopyası yapıcı tipik Python uygulanan böyle mi?

+6

10 İlgili: http://stackoverflow.com/questions/1241148/copy-constructor-in-python –

cevap

4

Bu, tüm öznitelikleri bir nesneden diğerine kopyalamanın bir yoludur. Ancak dikkat edin:

  • amacı, herhangi bir tip (nesnesiyle aynı türde oluşturulan) sahip olabilir __init__ yönteme geçirildi.
  • Sadece nesne nitelikleri kopyalanır (sınıf özellikleri ve yöntemleri değil).
4

Özniteliklerin kopyalanmadığını unutmayın, bunlar paylaşılan.

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