Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich in Python übergeordnete Klassenmethoden aus untergeordneten Klassen aufrufen?

Wie kann ich in Python übergeordnete Klassenmethoden aus untergeordneten Klassen aufrufen?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-03 14:14:16736Durchsuche

How Can I Call Parent Class Methods from Child Classes in Python?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn