Python

⌘K
  1. Home
  2. Docs
  3. Python
  4. Python Inheritance (Vererbung)

Python Inheritance (Vererbung)

Python Inheritance (Vererbung): Vererbung in Python ist ein fundamentales Konzept der objektorientierten Programmierung, das es einer Klasse ermöglicht, Eigenschaften und Methoden einer anderen Klasse zu erben. Dies fördert die Wiederverwendbarkeit des Codes und die Strukturierung von Programmen. Die Klasse, die die Eigenschaften und Methoden erbt, wird als Unterklasse oder Kindklasse bezeichnet, während die Klasse, von der geerbt wird, als Oberklasse oder Elternklasse bezeichnet wird.

1. Grundlagen der Vererbung

Bei der Vererbung können Unterklassen die Attribute und Methoden der Oberklasse übernehmen. Dies ermöglicht es, gemeinsame Funktionen in der Oberklasse zu definieren und spezifische Funktionen in den Unterklassen zu implementieren.

Beispiel

class Tier:
    def __init__(self, name):
        self.name = name

    def sprechen(self):
        return "Ein Tier macht Geräusche."

class Hund(Tier):
    def sprechen(self):
        return f"{self.name} sagt: Wuff!"

class Katze(Tier):
    def sprechen(self):
        return f"{self.name} sagt: Miau!"

In diesem Beispiel ist Tier die Oberklasse, während Hund und Katze die Unterklassen sind, die die Methode sprechen() überschreiben.

2. Erstellen von Unterklassen

Unterklassen werden erstellt, indem der Namen der Oberklasse in Klammern hinter dem Namen der Unterklasse angegeben wird.

Beispiel

mein_hund = Hund("Bello")
mein_katze = Katze("Miez")

print(mein_hund.sprechen())  # Ausgabe: Bello sagt: Wuff!
print(mein_katze.sprechen())  # Ausgabe: Miez sagt: Miau!

3. Vererbung mehrerer Klassen

Python unterstützt auch die Mehrfachvererbung, bei der eine Unterklasse von mehreren Oberklassen erben kann. Dies sollte jedoch mit Bedacht eingesetzt werden, um Komplexität zu vermeiden.

Beispiel

class Fliegen:
    def fliegen(self):
        return "Ich kann fliegen."

class Papagei(Tier, Fliegen):
    def sprechen(self):
        return f"{self.name} sagt: Hallo!"

mein_papagei = Papagei("Paco")
print(mein_papagei.sprechen())  # Ausgabe: Paco sagt: Hallo!
print(mein_papagei.fliegen())    # Ausgabe: Ich kann fliegen.

4. Verwendung von super()

Die Funktion super() wird verwendet, um auf Methoden der Oberklasse zuzugreifen. Dies ist besonders nützlich, wenn Sie die Initialisierung der Oberklasse in der Unterklasse erweitern möchten.

Beispiel

class Fahrzeug:
    def __init__(self, marke):
        self.marke = marke

class Auto(Fahrzeug):
    def __init__(self, marke, modell):
        super().__init__(marke)  # Aufruf des Konstruktors der Oberklasse
        self.modell = modell

mein_auto = Auto("Volkswagen", "Golf")
print(f"{mein_auto.marke} {mein_auto.modell}")  # Ausgabe: Volkswagen Golf

5. Überschreiben von Methoden

Unterklassen können Methoden der Oberklasse überschreiben, um spezifisches Verhalten zu definieren. Dies ermöglicht eine angepasste Implementierung für verschiedene Unterklassen.

Beispiel

class Fahrzeug:
    def fahren(self):
        return "Das Fahrzeug fährt."

class Fahrrad(Fahrzeug):
    def fahren(self):
        return "Das Fahrrad fährt pedalgetrieben."

mein_fahrrad = Fahrrad()
print(mein_fahrrad.fahren())  # Ausgabe: Das Fahrrad fährt pedalgetrieben.

6. Abstrakte Klassen und Interfaces

In Python können Sie auch abstrakte Klassen erstellen, die nicht instanziiert werden können und mindestens eine abstrakte Methode enthalten müssen. Abstrakte Klassen werden mit dem Modul abc definiert.

Beispiel

from abc import ABC, abstractmethod

class Tier(ABC):
    @abstractmethod
    def sprechen(self):
        pass

class Hund(Tier):
    def sprechen(self):
        return "Wuff!"

mein_hund = Hund()
print(mein_hund.sprechen())  # Ausgabe: Wuff!

Häufig gestellte Fragen

Was ist Vererbung in Python?

Vererbung ist ein Konzept der objektorientierten Programmierung, das es einer Klasse ermöglicht, Eigenschaften und Methoden einer anderen Klasse zu erben.

Was ist der Unterschied zwischen Mehrfachvererbung und einfacher Vererbung?

Einfacher Vererbung bedeutet, dass eine Unterklasse von nur einer Oberklasse erbt, während Mehrfachvererbung es einer Unterklasse ermöglicht, von mehreren Oberklassen zu erben.

Wie kann ich auf Methoden der Oberklasse zugreifen?

Sie können die Funktion super() verwenden, um auf Methoden und Attribute der Oberklasse zuzugreifen, insbesondere innerhalb des Konstruktors oder anderer Methoden der Unterklasse.