Menu
Coddy logo textTech

Mehrfachvererbung

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

Mehrfache Vererbung ermöglicht es einer Klasse, von mehr als einer Basisklasse zu erben, wodurch Funktionalitäten aus verschiedenen Quellen kombiniert werden.

Hier sind zwei Basisklassen:

class Animal:
    def __init__(self, name):
        self.name = name
    
    def eat(self):
        return f"{self.name} is eating"

class Flyable:
    def fly(self):
        return f"{self.name} is flying"

Erstellen Sie eine Kindklasse, die von beiden Elternklassen erbt:

class Bird(Animal, Flyable):
    def __init__(self, name, species):
        super().__init__(name)  # Ruft __init__ von Animal auf
        self.species = species
    
    def sing(self):
        return f"{self.name} is singing"

Die Syntax class Bird(Animal, Flyable): bedeutet, dass Bird sowohl von Animal als auch von Flyable erbt.

Erstellen Sie ein Vogel-Objekt und verwenden Sie Methoden von beiden Elternteilen:

sparrow = Bird("Sparrow", "House sparrow")

Methoden der ersten Elternklasse aufrufen:

print(sparrow.eat())

Methoden der zweiten Elternklasse aufrufen:

print(sparrow.fly())

Rufe die eigene Methode des Vogels auf:

print(sparrow.sing())

Ausgabe:

Sparrow is eating
Sparrow is flying
Sparrow is singing

Sie können die Vererbungsreihenfolge überprüfen:

print(Bird.__mro__)  # Reihenfolge der Methodenauflösung

Dies zeigt, welche Elternklasse zuerst geprüft wird, wenn nach Methoden gesucht wird.

Wichtiger Punkt: Mehrfache Vererbung verwendet die Syntax class Child(Parent1, Parent2):. Die Kindklasse erhält alle Methoden von allen Elternklassen. Python prüft die Elternklassen von links nach rechts, wenn nach Methoden gesucht wird.

challenge icon

Aufgabe

Mittel

In dieser Herausforderung implementieren Sie ein Klassensystem über mehrere Dateien hinweg, das Mehrfachvererbung mit Smartphones demonstriert. Jede Klasse ist zur besseren Code-Organisation in einer eigenen Datei organisiert.

Sie müssen diese Dateien bearbeiten:

  • device.py - Implementieren Sie die Basisklasse Device
  • internet.py - Implementieren Sie die Basisklasse Internet
  • smartphone.py - Implementieren Sie die Klasse Smartphone, die von beiden Basisklassen erbt
  • driver.py - Implementieren Sie Testfälle, die überprüfen, ob Ihre Implementierung korrekt funktioniert

Jede Datei enthält detaillierte TODO-Kommentare, die Sie Schritt für Schritt durch die Implementierung führen.

Spickzettel

Mehrfache Vererbung ermöglicht es einer Klasse, von mehr als einer Elternklasse zu erben, unter Verwendung der Syntax class Child(Parent1, Parent2):

class Animal:
    def __init__(self, name):
        self.name = name
    
    def eat(self):
        return f"{self.name} is eating"

class Flyable:
    def fly(self):
        return f"{self.name} is flying"

class Bird(Animal, Flyable):
    def __init__(self, name, species):
        super().__init__(name)  # Ruft __init__ von Animal auf
        self.species = species
    
    def sing(self):
        return f"{self.name} is singing"

Die Kindklasse erbt alle Methoden von allen Elternklassen:

sparrow = Bird("Sparrow", "House sparrow")
print(sparrow.eat())   # Aus der Klasse Animal
print(sparrow.fly())   # Aus der Klasse Flyable
print(sparrow.sing())  # Birds eigene Methode

Überprüfen Sie die Method Resolution Order (MRO), um zu sehen, welche Elternklasse zuerst geprüft wird:

print(Bird.__mro__)  # Zeigt die Vererbungsreihenfolge

Probier es selbst

# TODO: Importiere die Smartphone-Klasse aus smartphone.py

# Erstelle ein Smartphone und teste seine Methoden
# TODO: Erstelle ein Smartphone-Objekt mit der Marke "Apple" und dem Modell "iPhone 13"
my_phone = None

# TODO: Rufe die Methode power_on() des Smartphones auf und gib sie aus

# TODO: Rufe die Methode connect() des Smartphones auf und gib sie aus

# TODO: Rufe die Methode make_call() des Smartphones mit dem Parameter "123-456-7890" auf und gib sie aus
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