Menu
CoddyTech

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 aus 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 Hundeobjekt:

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

Verwende super(), um Methoden der übergeordneten Klasse 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!")        # Hundspezifisches Verhalten hinzufügen

Rufe die erweiterte Methode auf:

buddy = Dog()
buddy.make_sound()

Ausgabe:

Generic animal sound
Woof!

Ohne super() würdest du die Funktionalität des Elternteils verlieren:

class Cat(Animal):
    def make_sound(self):
        print("Meow!")  # Nur Katzenlaut, Elternmethode ignoriert
cat = Cat()
cat.make_sound()

Ausgabe:

Meow!

Wichtiger Punkt: Verwende super(), um Methoden der Elternklasse aus Kindklassen aufzurufen. Dadurch kannst du die Funktionalität erweitern, anstatt sie vollständig zu ersetzen. Häufige Verwendungen umfassen das Aufrufen der __init__-Methoden der Elternklasse und das Erweitern des Verhaltens der Elternklasse.

challenge icon

Aufgabe

Mittel

In dieser Herausforderung implementierst du mithilfe von Vererbung eine Klassenhierarchie aus den Klassen Person und Employee.

  • person.py: Enthält die Klasse Person mit den Attributen name und age
  • employee.py: Enthält die Klasse Employee, die von Person erbt
  • driver.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 introduce()-Methode auf dem Person-Objekt auf
    # Expected output: "Hi, I'm Alice and I'm 30 years old"
    
    # TODO: Gib eine leere Zeile für den Abstand aus - print()
    
    # TODO: Rufe die introduce()-Methode auf dem 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 Objektorientierte Programmierung

Übe selbstständig: Online-Python-Compiler