Heim >Backend-Entwicklung >Python-Tutorial >Wie rufe ich übergeordnete Klassenmethoden in der Python-Vererbung auf?

Wie rufe ich übergeordnete Klassenmethoden in der Python-Vererbung auf?

Susan Sarandon
Susan SarandonOriginal
2024-11-27 04:04:10523Durchsuche

How Do I Call Parent Class Methods in Python Inheritance?

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!

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