Whatsapp Telegram Telegram Call Anrufen

Vererbung in Python


Vererbung ist ein zentrales Konzept der objektorientierten Programmierung (OOP) und ermöglicht es, eine neue Klasse zu erstellen, die die Eigenschaften und Methoden einer bestehenden Klasse erbt. Dies fördert die Wiederverwendbarkeit und Modularität von Code. In diesem Artikel werden wir die Vererbung in Python detailliert erläutern und mit Beispielen veranschaulichen.

1. Einführung in die Vererbung

Vererbung ermöglicht es einer Klasse (Unterklasse), die Eigenschaften und Methoden einer anderen Klasse (Oberklasse) zu übernehmen. Die Unterklasse kann zusätzliche Eigenschaften und Methoden hinzufügen oder bestehende Methoden der Oberklasse überschreiben.

Beispiel:

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

    def geraeusch_machen(self):
        pass

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

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


2. Erstellen einer Unterklasse

Eine Unterklasse wird erstellt, indem die Oberklasse in Klammern nach dem Namen der Unterklasse angegeben wird.

Beispiel:

class Vogel(Tier):
    def geraeusch_machen(self):
        print(f"{self.name} sagt: Zwitscher!")


3. Zugriff auf Oberklassenmethoden

Mit der Funktion super() kann die Methode der Oberklasse in der Unterklasse aufgerufen werden.

Beispiel:

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

    def bewegen(self):
        print(f"{self.name} bewegt sich.")

class Fisch(Tier):
    def bewegen(self):
        super().bewegen()
        print(f"{self.name} schwimmt.")

nemo = Fisch("Nemo")
nemo.bewegen()

# Ausgabe:
# Nemo bewegt sich.
# Nemo schwimmt.


4. Überschreiben von Methoden

Eine Methode in der Unterklasse kann die Methode der Oberklasse überschreiben, um spezifisches Verhalten zu implementieren.

Beispiel:

class Tier:
    def geraeusch_machen(self):
        print("Das Tier macht ein Geräusch.")

class Hund(Tier):
    def geraeusch_machen(self):
        print("Der Hund bellt.")

tier = Tier()
tier.geraeusch_machen()

hund = Hund()
hund.geraeusch_machen()

# Ausgabe:
# Das Tier macht ein Geräusch.
# Der Hund bellt.


5. Erweiterung von Methoden

Die Erweiterung von Methoden ist ein Konzept in der objektorientierten Programmierung, bei dem eine Methode in einer Unterklasse die Methode der Oberklasse aufruft und zusätzliches Verhalten hinzufügt. Dies ermöglicht es, die Funktionalität der Oberklasse zu nutzen und gleichzeitig spezifisches Verhalten in der Unterklasse zu definieren. Die super()-Funktion spielt hierbei eine zentrale Rolle, da sie den Zugriff auf die Methode der Oberklasse ermöglicht.

Grundprinzip der Erweiterung von Methoden

Wenn Sie eine Methode in der Unterklasse erweitern, rufen Sie zuerst die Methode der Oberklasse mit super() auf und fügen dann das spezifische Verhalten der Unterklasse hinzu.

Beispiel:

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

    def beschreiben(self):
        print(f"Dies ist ein {self.__class__.__name__} namens {self.name}.")

class Hund(Tier):
    def beschreiben(self):
        super().beschreiben()
        print("Der Hund ist ein treuer Begleiter.")

hund = Hund("Bello")
hund.beschreiben()

# Ausgabe:
# Dies ist ein Hund namens Bello.
# Der Hund ist ein treuer Begleiter.


Erweiterung von Methoden mit zusätzlichen Attributen

Sie können auch zusätzliche Attribute in der Unterklasse definieren und diese in der erweiterten Methode verwenden.

Beispiel:

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

    def beschreiben(self):
        print(f"Dies ist ein {self.__class__.__name__} namens {self.name}.")

class Vogel(Tier):
    def __init__(self, name, fluegelspannweite):
        # Aufruf der Initialisierungsmethode der Oberklasse
        super().__init__(name)
        self.fluegelspannweite = fluegelspannweite

    def beschreiben(self):
        super().beschreiben()
        print(f"Dieser Vogel hat eine Flügelspannweite von {self.fluegelspannweite} cm.")

vogel = Vogel("Tweety", 30)
vogel.beschreiben()

# Ausgabe:
# Dies ist ein Vogel namens Tweety.
# Dieser Vogel hat eine Flügelspannweite von 30 cm.


Erweiterung von Methoden mit zusätzlicher Logik

Sie können zusätzliche Logik in der Methode der Unterklasse hinzufügen, um spezifische Anforderungen zu erfüllen.

Beispiel:

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

    def beschreiben(self):
        print(f"Fahrzeug: {self.marke} {self.modell}")

class Elektrofahrzeug(Fahrzeug):
    def __init__(self, marke, modell, batteriekapazitaet):
        super().__init__(marke, modell)
        self.batteriekapazitaet = batteriekapazitaet

    def beschreiben(self):
        super().beschreiben()
        print(f"Dieses Elektrofahrzeug hat eine Batteriekapazität von {self.batteriekapazitaet} kWh.")

tesla = Elektrofahrzeug("Tesla", "Model S", 100)
tesla.beschreiben()

# Ausgabe:
# Fahrzeug: Tesla Model S
# Dieses Elektrofahrzeug hat eine Batteriekapazität von 100 kWh.


Mehrstufige Vererbung und Methoden-Erweiterung

In der Mehrstufigen Vererbung kann eine Methode in einer Unter-Unterklasse erweitert werden, wobei jede Stufe die Methode der vorherigen Klasse aufruft.

Beispiel:

class Lebewesen:
    def beschreiben(self):
        print("Dies ist ein Lebewesen.")

class Tier(Lebewesen):
    def beschreiben(self):
        super().beschreiben()
        print("Dies ist ein Tier.")

class Hund(Tier):
    def beschreiben(self):
        super().beschreiben()
        print("Dies ist ein Hund.")

hund = Hund()
hund.beschreiben()

# Ausgabe:
# Dies ist ein Lebewesen.
# Dies ist ein Tier.
# Dies ist ein Hund.


6. Mehrfachvererbung

Python unterstützt Mehrfachvererbung, bei der eine Klasse von mehr als einer Oberklasse erben kann. Dies kann nützlich sein, birgt aber auch das Risiko von Namenskonflikten und sollte mit Vorsicht verwendet werden.

Beispiel:

class Schwimmfaehig:
    def schwimmen(self):
        print("Das Tier kann schwimmen.")

class Fliegfaehig:
    def fliegen(self):
        print("Das Tier kann fliegen.")

class Ente(Schwimmfaehig, Fliegfaehig):
    pass

ente = Ente()
ente.schwimmen()
ente.fliegen()


# Ausgabe:
# Das Tier kann schwimmen.
# Das Tier kann fliegen.Das 


7. Überprüfung der Vererbungshierarchie

Mit der Funktion isinstance() können Sie überprüfen, ob ein Objekt eine Instanz einer bestimmten Klasse oder einer ihrer Oberklassen ist. Mit der Funktion issubclass() können Sie überprüfen, ob eine Klasse eine Unterklasse einer anderen Klasse ist.

Beispiel:

print(isinstance(hund, Tier))  # Ausgabe: True
print(issubclass(Hund, Tier))  # Ausgabe: True
print(issubclass(Hund, Fliegfaehig))  # Ausgabe: False


Zusammenfassung

Die Vererbung ist ein mächtiges Werkzeug der objektorientierten Programmierung, das es ermöglicht, Code wiederzuverwenden und zu organisieren. Durch die Verwendung von Vererbung können Sie Klassen erstellen, die die Eigenschaften und Methoden anderer Klassen übernehmen und erweitern. Das Verständnis und die Anwendung von Vererbung, einschließlich der Verwendung von super(), dem Überschreiben und Erweitern von Methoden sowie der Mehrfachvererbung, ermöglicht es Ihnen, flexible und wartbare Python-Programme zu schreiben.



CEO Image

Ali Ajjoub

info@ajjoub.com

Adresse 0049-15773651670

Adresse Jacob-winter-platz,1 01239 Dresden

Buchen Sie jetzt Ihren Termin für eine umfassende und individuelle Beratung.

Termin Buchen

Kontaktieren Sie uns

Lassen Sie uns K o n t a k t aufnehmen!