SORU
24 Mayıs 2009, Pazar


Zincir-arama ana kurucular python

Bu üst sınıf aramak için genel bir yol Nedir, bir temel sınıf, B sınıfı miras, C sınıfı devralmasını B. yapıcı yapıcı düşünün? Eğer bu hala çok belirsiz sesler, burada bazı kod var.

class A(object):
    def __init__(self):
        print "Constructor A was called"

class B(A):
    def __init__(self):
        super(B,self).__init__()
        print "Constructor B was called"

class C(B):
    def __init__(self):
        super(C,self).__init__()
        print "Constructor C was called"

c = C()

Bu şimdi nasıl yaptığımı. Ama yine de biraz genel olmayan çok görünüyor - hala elle doğru bir tür geçmek zorunda.

Şimdi denedim kullanarak self.__class__ gibi bir ilk bağımsız değişken için super(), ama belli ki işe yaramıyor - eğer Sen Koy yapıcı C - yeterince adil, B constructor çağrılır. B aynısını yap, "kendi kendine" hala C o kadar uç bir örnek, yine B kurucu (sonsuz özyineleme biter) arama noktaları.

Şimdi elmas miras düşünmeye gerek yok, sadece bu özel sorunun çözümü ile ilgileniyorum.

CEVAP
24 Mayıs 2009, Pazar


Bunu gerçekten tavsiye (Python için 2.x).

Sınıf açıkça super geçirilir olup olmadığı konusunun tarzı yerine, işlevi önemli. Python felsefesi ile super uygun sınıf içinde geçen "açık örtülü daha iyidir".

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • efaustus9

    efaustus9

    16 HAZİRAN 2006
  • mipd1980

    mipd1980

    25 EKİM 2006
  • POGProductionz

    POGProductio

    27 NİSAN 2012