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

  • cyriak

    cyriak

    29 Mart 2006
  • David MeShow

    David MeShow

    10 EKİM 2006
  • thelonelyisland

    thelonelyisl

    23 Aralık 2005