Ich habe Code wie folgt aus:Wie vermeidet man unendliche Rekursion mit super()?
class A(object):
def __init__(self):
self.a = 1
class B(A):
def __init__(self):
self.b = 2
super(self.__class__, self).__init__()
class C(B):
def __init__(self):
self.c = 3
super(self.__class__, self).__init__()
Instanziierungsanwendung B funktioniert wie erwartet, aber Instanziieren C rekursiv unendlich und verursacht einen Stapelüberlauf. Wie kann ich das lösen?
Zunächst einmal ... Call-Init mit Super ist ein großes Problem, das das Internet entschieden hat, muss existieren. Es funktioniert der Thomas beschreibt ... aber warum machst du einen Super mit einer Init? Dafür ist es nicht gedacht. (Damn OK als Standard für die Eingabe)
Denken Sie nur daran ... wenn Sie Super-Init ... nennen Sie die Basisklassen init, möglicherweise überschreiben alle Arbeiten, die Sie getan haben. Wenn Sie darauf bestehen, super mit init zu verwenden, tun Sie es richtig. –
Prof. Ebral, bitte sagen Sie uns den richtigen Weg, um es zu benutzen, wenn wir müssen. – nmz787
@ nmz787: Aufruf an Super sollte getan werden, bevor lokale Initialisierungen durchgeführt werden, die Fragen tun es andersherum ... Nun! Ich sollte die Frage wahrscheinlich bearbeiten, da es eine schlechte Übung ist und nicht als Beispiel übrig bleiben sollte. – kriss