Menu
Coddy logo textTech

Die super()-Funktion

Teil des Abschnitts Object Oriented Programming der Python-Journey von Coddy — Lektion 18 von 64.

Die super()-Funktion ermöglicht es einer Child-Klasse, Methoden ihrer Parent-Klasse aufzurufen. Dies erlaubt es Ihnen, die Funktionalität der Parent-Klasse zu 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 Retriever

Verwenden 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ügen

Rufen 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.

challenge icon

Aufgabe

Mittel

In dieser Herausforderung wirst du eine Person- und Employee-Klassenhierarchie unter Verwendung von Vererbung implementieren.

  • person.py: Enthält die Person-Klasse mit den Attributen name und age
  • employee.py: Enthält die Employee-Klasse, die von Person erbt
  • driver.py: Hauptdatei zum Testen deiner Implementierung

Jede Datei enthält detaillierte 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()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Object Oriented Programming