Pythons super() mit Mehrfachvererbung
In Python bedeutet Mehrfachvererbung, dass eine Klasse von mehreren übergeordneten Klassen erbt. Bei der Verwendung der super()-Funktion in solchen Szenarien ist es wichtig, ihr Verhalten zu verstehen.
super() in der Mehrfachvererbung
super() dient hauptsächlich zwei Zwecken :
Im angegebenen Codeausschnitt:
class First(object): def __init__(self): print("first") class Second(object): def __init__(self): print("second") class Third(First, Second): def __init__(self): super(Third, self).__init__() print("that's it")
Wenn ein Third-Objekt instanziiert wird, passiert Folgendes:
Mehrdeutige MROs
Wenn die Vererbungskette jedoch komplexer wird, kann es solche geben Unklarheit bei der Bestimmung des MRO. Dies tritt auf, wenn eine untergeordnete Klasse von mehreren Klassen erbt, die von derselben Basisklasse erben. Python löst in solchen Fällen einen Fehler aus.
Betrachten Sie beispielsweise den folgenden Code:
class First(object): def __init__(self): print("first") class Second(First): def __init__(self): print("second") class Third(First): def __init__(self): print("third")
Beim Versuch, eine Klasse zu erstellen, die sowohl von Second als auch von Third erbt, löst Python einen TypeError aus zu einem mehrdeutigen MRO. Die Reihenfolge der übergeordneten Klassen in der Vererbungsliste ist von Bedeutung und sollte in der gesamten Codebasis konsistent sein.
Fazit
Pythons super()-Funktion ist ein leistungsstarkes Tool zur Verwaltung Mehrfachvererbung. Wenn Sie sein Verhalten verstehen, können Sie Methodenkonflikte effektiv lösen und eine klare Klassenhierarchie aufrechterhalten.
Das obige ist der detaillierte Inhalt vonWie geht die Funktion „super()' von Python mit Mehrfachvererbung und Methodenauflösungsreihenfolge (MRO) um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!