Die super()-Funktion
Teil des Abschnitts Objektorientierte Programmierung der Python-Journey von Coddy. Lektion 18 von 64.
Die Funktion super() ermöglicht es einer Kindklasse, Methoden ihrer Elternklasse aufzurufen. Dadurch kannst du die Funktionalität der Elternklasse erweitern, anstatt sie vollständig zu ersetzen.
Hier ist ein Beispiel für die Verwendung von super() im Konstruktor:
class Animal:
def __init__(self, name):
self.name = name
print(f"Animal created: {name}")
class Dog(Animal):
def __init__(self, name, breed):
super().__init__(name) # Rufe __init__ der Elternklasse auf
self.breed = breed
print(f"Dog breed set: {breed}")Erstelle ein Hund-Objekt:
buddy = Dog("Buddy", "Golden Retriever")
print(f"Name: {buddy.name}, Breed: {buddy.breed}")Ausgabe:
Animal created: Buddy
Dog breed set: Golden Retriever
Name: Buddy, Breed: Golden RetrieverVerwenden Sie super(), um Methoden der Elternklasse zu erweitern:
class Animal:
def make_sound(self):
print("Generic animal sound")
class Dog(Animal):
def make_sound(self):
super().make_sound() # Zuerst die Methode der Elternklasse aufrufen
print("Woof!") # Hundespezifisches Verhalten hinzufügenRufen Sie die erweiterte Methode auf:
buddy = Dog()
buddy.make_sound()Ausgabe:
Generic animal sound
Woof!Ohne super() würden Sie die Funktionalität der Elternklasse verlieren:
class Cat(Animal):
def make_sound(self):
print("Meow!") # Nur Katzenlaut, Elternmethode wird ignoriert
cat = Cat()
cat.make_sound()Ausgabe:
Meow!Wichtiger Punkt: Verwenden Sie super(), um Methoden der Elternklasse aus Kindklassen aufzurufen. Dies ermöglicht es Ihnen, die Funktionalität zu erweitern, anstatt sie vollständig zu ersetzen. Häufige Anwendungsfälle sind der Aufruf von __init__-Methoden der Elternklasse und die Erweiterung des Verhaltens der Elternklasse.
Aufgabe
MittelIn dieser Herausforderung implementierst du mithilfe von Vererbung eine Klassenhierarchie mit den Klassen Person und Employee.
person.py: Enthält die Klasse Person mit den Attributen name und ageemployee.py: Enthält die Klasse Employee, die von Person erbtdriver.py: Hauptdatei zum Testen deiner Implementierung
Jede Datei enthält ausführliche TODO-Kommentare, die dich durch die Implementierung führen.
Probier es selbst
# TODO: Importiere die Person-Klasse aus person.py
# TODO: Importiere die Employee-Klasse aus employee.py
def main():
# TODO: Erstelle ein Person-Objekt mit dem Namen "Alice" und dem Alter 30
person = None
# TODO: Erstelle ein Employee-Objekt mit dem Namen "Bob", dem Alter 35 und dem Beruf "Developer"
employee = None
# TODO: Rufe die Methode introduce() für das Person-Objekt auf
# Erwartete Ausgabe: "Hi, I'm Alice and I'm 30 years old"
# TODO: Gib eine Leerzeile zur Abgrenzung aus - print()
# TODO: Rufe die Methode introduce() für das Employee-Objekt auf
# Erwartete Ausgabe:
# "Hi, I'm Bob and I'm 35 years old"
# "I work as a Developer"
if __name__ == "__main__":
main()Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDer self-ParameterMethodenAttributeKonstruktormethode (__init__)Zusammenfassung – Einfacher Taschenrechner4Vererbung
Grundlegende VererbungDie super()-FunktionMethodenüberschreibungMehrfachvererbungMethodenauflösungsreihenfolgeWiederholung – Mitarbeiterhierarchie7Spezielle Methoden
Einführung in magische MethodenOperatorüberladungMagische Methoden für ContainerRückblick – Benutzerdefinierte Liste10Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterObserver-MusterStrategy-Muster13Abschließende Herausforderungen
E-Learning-PlattformBankensystemEntwicklung von SpielfigurenFahrzeugvermietungsservice2Dekoratoren
Einführung in DekoratorenProperty-DekoratorDekorator für statische MethodenDekorator für Klassenmethoden5Polymorphie
Methodenüberschreibung erneut betrachtetDuck-TypingAbstrakte Klassen und MethodenSchnittstellendesignRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungMixinsStatische Methoden und KlassenmethodenKlassen-DekoratorenKontextmanager3Klassenattribute
Instanz- vs. KlassenvariablenProperty-DecoratorsPrivate AttributeWiederholung – Bankkontoverwaltung6Kapselung
Öffentliche, geschützte, private MemberZugriffsmodifikatorenInformationsverbergungProperty-Decorators – FortgeschrittenWiederholung – System zur Verwaltung von Studentendaten12Projekt: Bibliotheksverwaltung
ProjektübersichtBuch- und BenutzerklassenAusleihsystemSuchfunktionAdministrationsoberflächeTests und IntegrationÜbe selbstständig: Online-Python-Compiler