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
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".
Python çoklu kurucular için temiz, pyt...
Ve Python dosyasına bir satır yerine a...
Ne Python's re arasındaki farktır...
İkili arama (ikiye bölme) Python...
Arama sanal fonksiyonlar içinde kurucu...