Ich habe eine Klassenhierarchie A & lt; - B & lt; - C, in B brauche ich etwas Verarbeitung im Konstruktor, also habe ich diesen Code aus diesem Beitrag erstellt: Verstehen Python Super () mit __init __ () Methoden
%Vor%Allerdings habe ich einen Laufzeitfehler von maximaler Rekursion überschritten
%Vor%Was könnte falsch sein?
Zunächst zu beachten: C erbt Konstruktor von B (weil es nicht in C definiert ist).
Zweite Sache zu beachten:
self.__class__
in __init__
Aufruf in C-Klasse ist C, nicht B.
Lassen Sie uns analysieren:
C().__init__
ruft super(self.__class__, self).__init__(v, v2)
auf, in das aufgelöst wird
super(C, self).__init__(v, v2)
, was B.__init__(self, v, v2)
bedeutet. B.__init__
übergeben wurde, hat den Typ C
. super(self.__class__, self).__init__(v, v2)
wird wieder in B.__init__(self, v, v2)
aufgelöst. Tags und Links python hierarchy recursion superclass