Heim >Backend-Entwicklung >Python-Tutorial >Wie rufe ich übergeordnete Klassenmethoden in der Python-Vererbung auf?
Aufrufen übergeordneter Klassenmethoden in Python
Der Vererbungsmechanismus von Python ermöglicht abgeleiteten Klassen den Zugriff auf Basisklassenmethoden, im Gegensatz zu Perl oder Java ist dies jedoch der Fall Geben Sie kein Schlüsselwort wie „super“ an. Stattdessen müssen Sie explizit auf die übergeordnete Klasse verweisen.
Beispiel:
Betrachten Sie das folgende Beispiel, in dem die Bar-Klasse die Foo-Klasse erweitert:
class Foo: def frotz(self): return "Bamf" class Bar(Foo): def frotz(self): # Attempt to explicitly call the parent class 'frotz' method return Foo.frotz(self)
Dieser Ansatz erfordert die explizite Angabe der übergeordneten Klasse, was für Deep unpraktisch ist Hierarchien.
Lösung: Verwendung der Funktion „super()“
Python 2.2 und später führte die Funktion super() ein, die eine elegantere Lösung bietet:
class Bar(Foo): def frotz(self): # Now calling 'frotz' using the 'super()' function return super().frotz()
Die super()-Funktion bestimmt auf intelligente Weise die übergeordnete Klasse, von der geerbt werden soll, basierend auf dem Kontext in der abgeleiteten Klasse. Dadurch entfällt die Notwendigkeit, die übergeordnete Klasse explizit anzugeben.
Für Python < 3:
Für Python-Versionen vor 3 müssen Sie sich jedoch ausdrücklich für die Verwendung neuer Klassen entscheiden:
class Foo(object): def baz(self): pass class Bar(Foo): def baz(self, arg): return super(Bar, self).baz(arg) # Explicitly specifying 'Bar' as parent
Die Objektbasisklasse wird verwendet, um neue Klassen zu ermöglichen. Stilklassensyntax.
In Python ist der Aufruf von übergeordneten Klassenmethoden aus abgeleiteten Klassen mit der Funktion „super()“ (bevorzugt) oder durch expliziten Verweis auf die übergeordnete Klasse möglich (nur notwendig für Python < 3).
Das obige ist der detaillierte Inhalt vonWie rufe ich übergeordnete Klassenmethoden in der Python-Vererbung auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!