Python Grundlagen: Objektorientierte Programmierung (OOP)
Grundlagen der Vererbung
Lesson 3 of 7 • 10 XP
Keep your place in this quest
Log in or sign up for free to subscribe, follow lesson progress, and access more learning content.
Vererbung ist eines der Kernkonzepte der Objektorientierten Programmierung (OOP).
Sie erlaubt einer Klasse (dem Kind oder Unterklasse) die Attribute und Methoden einer anderen Klasse (dem Elternteil oder Oberklasse) zu erben.
Das bedeutet, dass du allgemeines Verhalten und Daten in einer Basisklasse definieren kannst und dann spezialisiertere Klassen erstellst, die diese Funktionalität wiederverwenden und anpassen — ohne denselben Code neu schreiben zu müssen.
Grundsyntax der Vererbung
In Python wird Vererbung umgesetzt, indem der Name der Elternklasse in Klammern nach dem Namen der Kindklasse angegeben wird.
class ParentClass:
# Attribute und Methoden der Elternklasse
class ChildClass(ParentClass):
# Attribute und Methoden der Kindklasse
Wenn eine Kindklasse von einer Elternklasse erbt, erhält sie:
- Alle Attribute des Elternteils (Variablen, die mit dem Objekt verbunden sind)
- Alle Methoden des Elternteils (Funktionen, die mit dem Objekt verbunden sind)
- Jeden Konstruktor (
__init__), den die Elternklasse hat
Beispiel: Tiere und Geräusche
Bringen wir Vererbung mit etwas, das jeder kennt, zum Leben — Tieren.
Wir starten mit einer allgemeinen Animal-Klasse, die definiert, was alle Tiere gemeinsam haben, und erstellen dann spezifische Tierarten (Dog und Cat), die diese Eigenschaften teilen, aber unterschiedliche Geräusche machen.
Hier ist die Basisklasse:
class Animal:
def __init__(self, name, age):
self.name = name
self.age = age
def sound(self):
pass # Wir lassen jedes konkrete Tier seinen eigenen Ton bestimmen
Die Animal-Klasse hat:
- Eine
__init__-Methode, die dennameundagefür jedes Tier setzt. - Eine
sound()-Methode, die noch nichts tut (passist nur ein Platzhalter). Diese ersetzen wir in jedem Tier mit dem jeweiligen Geräusch der Art.
Jetzt erstellen wir zwei spezifische Tierklassen:
class Dog(Animal):
def sound(self):
print("Woof woof!")
class Cat(Animal):
def sound(self):
print("Meow!")
Das passiert hier:
- Sowohl
Dogals auchCaterben vonAnimal, wodurch sie automatisch die Attributenameundagebekommen, ohne dass wir den Code wiederholen müssen. - Jede Klasse überschreibt die
sound()-Methode, um ihr eigenes Geräusch zu machen.
Objekte erstellen und verwenden
dog = Dog("Rex", 2)
cat = Cat("Mimi", 3)
print(dog.name) # Rex
dog.sound() # Woof woof!
print(cat.name) # Mimi
cat.sound() # Meow!
Wenn wir Dog("Rex", 2) erstellen, passiert Schritt für Schritt:
- Python ruft die
__init__-Methode vonAnimalauf (weilDogkeine eigene hat). - Die übergebenen Werte für
nameundagewerden im neuen Objekt gespeichert. - Beim Aufruf von
dog.sound()sucht Python zuerst nach einersound()-Methode inDog. Es findet dort die selbst geschriebene Methode und führt sie aus — dabei wird"Woof woof!"ausgegeben.
Dasselbe gilt für Cat, das seine eigene sound()-Methode findet und ausführt.
Dieses Beispiel zeigt die Magie der Vererbung:
- Wir schreiben die gemeinsame Einrichtung (
__init__) nur einmal, in derAnimal-Klasse. - Jede Unterklasse (
Dog,Cat) behält die gemeinsamen Eigenschaften und fügt ihr eigenes Verhalten hinzu. - Das Ergebnis ist weniger sich wiederholender Code, besser organisierte Logik und eine einfachere Verwaltung verwandter Objekte.
3. Wie das funktioniert
- Gemeinsame Struktur: Die
__init__-Methode vonAnimalwird ausgeführt, wenn du einDog- oderCat-Objekt erzeugst, weil sie automatisch geerbt wird. - Methodenüberschreibung: Sowohl
Dogals auchCathaben eigenesound()-Methoden, die die Platzhalter-Methode inAnimalersetzen (überschreiben). Wenn dusound()auf einemDogaufrufst, verwendet Python die inDogdefinierte Methode, nicht die inAnimal.
TIP: Wenn eine Unterklasse eine Methode nicht überschreibt, wird automatisch die Methode der Elternklasse verwendet.
Warum Vererbung nutzen?
Vererbung ermöglicht es dir:
- Code-Duplikationen zu vermeiden, indem gemeinsame Logik in eine einzige Basisklasse gelegt wird.
- Deinen Code modularer und lesbarer zu machen.
- Spezialisierte Klassen auf Grundlage einer allgemeinen Vorlage zu erstellen.
Denkweise bei Vererbung:
Animal→ allgemeine Vorlage mitname,ageund einersound()-Methode.Dog→ eine spezifische Tierart mit eigenem, einzigartigem Geräusch.Cat→ eine weitere spezifische Tierart mit anderem Geräusch.
Zusammenfassung
Vererbung ist ein mächtiges Werkzeug in der OOP, um eine Klassenhierarchie zu erstellen, die von allgemeinen Konzepten zu spezialisierteren führt.
In Python setzt du sie um, indem du:
- Eine Elternklasse mit gemeinsamen Attributen und Methoden schreibst.
- Unterklassen erstellst, die den Namen der Elternklasse in Klammern angeben.
- Methoden in den Unterklassen je nach Bedarf hinzufügst oder überschreibst.
Im nächsten Unterricht bauen wir auf diesem Konzept auf und erkunden super() — eine Möglichkeit für Unterklassen, das Verhalten ihrer Elternklassen aufzurufen und zu erweitern.