Python super()-Funktion

Python3 integrierte Funktionen


super()Es ist eine in Python eingebaute Funktion, mit der Methoden der Elternklasse (Superklasse) aufgerufen werden.

Bei der Klassenvererbung,super()ermöglicht es Ihnen, Methoden der Elternklasse aufzurufen, was Code-Wiederverwendung und Methodenerweiterung ermöglicht. Dies ist eine sehr wichtige Funktion in der objektorientierten Programmierung mit Python.

Wortdefinition: superEs bedeutet "super", was sich hier auf die Elternklasse oder Superklasse bezieht.


Grundlegende Syntax und Parameter

Syntaxformat

super()
super(type, object-or-type)

Parameterbeschreibung

  • Parametertyp:
    • Typ: class
    • Beschreibung: Die Klasse, für die der Elternklassen-Proxy abgerufen werden soll.
  • Parameter object-or-type:
    • Typ: object oder class
    • Beschreibung: Muss eine Instanz oder Unterklasse von type sein.

Funktionsbeschreibung

  • Rückgabewert: Gibt ein Proxy-Objekt zurück, das verwendet wird, um Methoden der Elternklasse aufzurufen.
  • Funktion: Unterstützt Method Resolution Order (MRO) und behandelt Mehrfachvererbung korrekt.

Beispiele

Beispiel 1: Aufrufen des Konstruktors der Elternklasse in einer Unterklasse

Beispiel

# Elternklasse
class Animal:
    def __init__(self, name):
        self.name = name
        print(f"Tier {self.name} wurde geboren")

    def speak(self):
        print("Tier gibt ein Geräusch von sich")

# Unterklasse
class Dog(Animal):
    def __init__(self, name, breed):
        # Aufruf der __init__ der Elternklasse
        super().__init__(name)
        self.breed = breed
        print(f"Die Rasse ist {self.breed}")

    def speak(self):
        # Methode der Elternklasse aufrufen
        super().speak()
        print("Woof!")

# Test
dog = Dog("Little White", "Husky")
# Output:
# Animal Little White wurde geboren
# Die Rasse ist Husky

dog.speak()
# Output:
# Animal gibt einen Laut von sich
# Wuff!

Erwartete Ausgabe:

The animal Xiaobai was born
Breed: Husky
The animal makes sounds
Woof woof!

Codeanalyse:

  1. super().__init__(name)Ruft den Konstruktor der Elternklasse auf.
  2. super().speak()Ruft die Methode der Elternklasse auf.
  3. Dies ermöglicht es, die Funktionalität der Elternklasse in der Unterklasse zu erweitern.

Beispiel 2: Mehrfachvererbung

Beispiel

# Beispiel für Mehrfachvererbung
class A:
    def method(self):
        print("A.method")

class B(A):
    def method(self):
        print("B.method")
        super().method()  # A.method aufrufen

class C(A):
    def method(self):
        print("C.method")
        super().method()  # A.method aufrufen

class D(B, C):
    def method(self):
        print("D.method")
        super().method()  # Aufruf in MRO-Reihenfolge

# MRO: D -> B -> C -> A
d = D()
d.method()
# Output:
# D.method
# B.method
# C.method
# A.method

# MRO anzeigen
print(D.__mro__)

Erwartete Ausgabe:

D.method
B.method
C.method
A.method
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>)

Codeanalyse:

  • super()Aufgerufen gemäß MRO (Method Resolution Order).
  • Dies gewährleistet die Korrektheit der Mehrfachvererbung.

Beispiel 3: Ohne Parameter (Empfohlen)

Beispiel

# Empfohlene Verwendung in Python 3: keine Parameter erforderlich
class Parent:
    def greet(self, name):
        return f"Hello, {name}!"

class Child(Parent):
    def greet(self, name):
        # Methode der Elternklasse aufrufen und erweitern
        message = super().greet(name)
        return message + " Welcome back!"

child = Child()
print(child.greet("Tom"))
# Ausgabe: Hallo, Tom! Willkommen zurück!

Erwartete Ausgabe:

Die Ausführung in einer tatsächlichen Umgebung zeigt die erweiterte Begrüßung an.

super()Es ist eine Schlüsselfunktion für die Implementierung von Klassenvererbung und Polymorphismus in Python.


Python3 integrierte Funktionen


Andere Erweiterungen