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
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:
super().__init__(name)Ruft den Konstruktor der Elternklasse auf.super().speak()Ruft die Methode der Elternklasse auf.- Dies ermöglicht es, die Funktionalität der Elternklasse in der Unterklasse zu erweitern.
Beispiel 2: Mehrfachvererbung
Beispiel
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
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