Aufrufen von übergeordneten Klassenmethoden aus einer untergeordneten Klasse in Python
Beim Entwerfen einer Objekthierarchie ist es häufig erforderlich, Methoden aus übergeordneten Klassen darin aufzurufen abgeleitete Klassen. In Sprachen wie Perl und Java erleichtert das Schlüsselwort „super“ dies. In Python scheint der Ansatz jedoch anders zu sein.
Explizite Referenzierung der übergeordneten Klasse
In Python scheint die explizite Benennung der übergeordneten Klasse die einzige Möglichkeit zu sein Rufen Sie seine Methoden von einem Kind auf. Wenn beispielsweise die übergeordnete Klasse Foo eine Methode frotz enthält, müsste die untergeordnete Klasse Bar darauf als Foo::frotz() verweisen.
Einschränkungen und Bedenken
Dieser Ansatz könnte in komplexen Hierarchien zu Herausforderungen führen, in denen Kinder möglicherweise nicht immer die Klasse kennen, die eine geerbte Methode definiert hat. Dies kann zu Wartungs- und Lesbarkeitsproblemen führen.
Super()-Funktion
Glücklicherweise wurde in Python 2.2 und später die super()-Funktion eingeführt, um diese Einschränkung zu überwinden. Mit super() können Sie direkt auf die Methoden der übergeordneten Klasse zugreifen. Hier ist ein Beispiel:
class Foo: def frotz(self): return "Baz" class Bar(Foo): def frotz(self): # Call the parent class's frotz method using super() return super().frotz() + " Quux"
Durch den Aufruf von super().frotz() kann die untergeordnete Klasse Bar auf die frotz-Methode ihrer übergeordneten Klasse Foo zugreifen.
New-Style Klassen
Für Python-Versionen vor 3.0 müssen Sie sich ausdrücklich für die Verwendung von Klassen neuen Stils entscheiden. In diesem Fall ist die Syntax etwas anders:
class Foo(Bar): def baz(self, arg): return super(Foo, self).baz(arg)
In diesen älteren Versionen akzeptiert super zwei Argumente: den Namen der untergeordneten Klasse (z. B. Foo) und das Instanzobjekt (z. B. self).
Das obige ist der detaillierte Inhalt vonWie kann ich in Python übergeordnete Klassenmethoden aus untergeordneten Klassen aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!