Heim >Backend-Entwicklung >Python-Tutorial >Python-Vererbung: Was ist der Unterschied zwischen „super()'- und expliziten Superklassen-„__init__()'-Aufrufen?
Was ist der Unterschied zwischen „super“ und der expliziten Superklasse __init__()?
In Python bietet das Schlüsselwort super eine praktische Möglichkeit dazu Zugriff auf die Methoden der übergeordneten Klasse. Lassen Sie uns seine Verwendung untersuchen und sie mit der expliziten Methode zum Aufrufen der __init__-Methode des übergeordneten Elements vergleichen __init__-Methode der übergeordneten Klasse SomeBaseClass. Es koppelt die untergeordnete Klasse eng an dieses bestimmte übergeordnete Element und geht davon aus, dass die __init__-Methode des übergeordneten Elements immer vorhanden ist.
'super'-Initialisierung
class Child(SomeBaseClass): def __init__(self): SomeBaseClass.__init__(self)
Das super-Schlüsselwort ermöglicht dies für einen flexibleren Initialisierungsprozess. Es stellt sicher, dass die __init__-Methode der übergeordneten Klasse aufgerufen wird, die in der Method Resolution Order (MRO) auf die untergeordnete Klasse folgt. Dies ermöglicht die Möglichkeit einer Mehrfachvererbung oder des Hinzufügens zusätzlicher Basisklassen, ohne die Initialisierung des Kindes zu beeinträchtigen.
Python 2 vs. Python 3
class Child(SomeBaseClass): def __init__(self): super().__init__()In Python 2 ist die Syntax für Die Verwendung von super ist anders:
In Python 3 kann dies jedoch vereinfacht werden zu:
Vorteile der Verwendung von „super“
super(Child, self).__init__()
super().__init__()Vorwärtskompatibilität:
Die Verwendung von super ermöglicht Änderungen in der Klassenhierarchie ohne die Kompatibilität zu beeinträchtigen.
Abhängigkeitsinjektion:Das obige ist der detaillierte Inhalt vonPython-Vererbung: Was ist der Unterschied zwischen „super()'- und expliziten Superklassen-„__init__()'-Aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!