Einführung in die Vererbung in Python

Python, das über mehrere Paradigmen verfügt, passt offensichtlich zum objektorientierten Programmierstil. Und jede Sprache kann nicht lächerlich genug sein, um objektorientierte Methoden zu beanspruchen, ohne Unterstützung für Vererbung, einschließlich Python, bereitzustellen. Python bietet eine ausgesprochen einzigartige Art der Vererbung und ermöglicht äußerst leistungsstarke Operationen, die Sie noch nie zuvor gesehen haben. Obwohl dies mit einigen Einschränkungen verbunden ist, wird z. B. die Sicherheit durch den Umfang für Klassenmitglieder derzeit nur durch Konventionen erreicht und ist nicht inhärent Teil der Sprache. Als privat deklarierte Mitglieder sind daher mit einigen Änderungen öffentlich zugänglich.

Klassensyntax

Die Syntax zum Definieren einer abgeleiteten Klasse, wenn eine oder mehrere Basisklassen vererbt werden sollen, lautet wie folgt:

class derivedClassName(baseClassName(, …)):


Wie gezeigt, gibt die abgeleitete Klasse eine durch Kommas getrennte Liste von Basisklassen an, von denen der Klassendefinitionsheader erben soll.

Klasse Küche

Beginnen wir mit der Definition einer Basisklasse, die für alle unsere Beispiele verwendet wird:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

Die gezeigte Basis definiert eine Objektvorlage, mit der Küchen definiert und erfasst werden, ob es sich um eine gekochte Küche handelt oder nicht. Es gibt auch einen Konstruktor, der die Art der Küche akzeptiert. Später wird ein Objekt vom Typ "Gekocht" erstellt.

Arten der Vererbung in Python

Es gibt hauptsächlich zwei Arten von Vererbung, von denen eine Kombination jeden anderen Typ ergibt.

1. Einzelvererbung: Eine Basisklasse, die von einer abgeleiteten Klasse geerbt wird. Dies ist die einfachste Art der Vererbung. Auch der minimal mögliche. Die abgeleitete Klasse ruft automatisch den Basisklassenkonstruktor auf.

2. Mehrfachvererbung: Mehrere Basisklassen, die von einer abgeleiteten Klasse geerbt werden. Die Basisklassenkonstruktoren werden in der Reihenfolge aufgerufen, in der die Klassen abgeleitet wurden.

Abgeleitete Vererbungstypen

Die Kombination der beiden oben genannten Vererbungsarten kann zu folgenden Vererbungsarten führen:

1. Hierarchische Vererbung: Eine Basisklasse, die von mehreren abgeleiteten Klassen geerbt wird. Jede abgeleitete Klasse funktioniert unabhängig, aber Objekte verwenden die Klassenvariablen für verschiedene Klassen gemeinsam.

2. Mehrstufige Vererbung: Eine abgeleitete Klasse, die als Basisklasse für eine andere abgeleitete Klasse dient. Die Basisklassenkonstruktoren werden in diesem Fall rekursiv aufgerufen.

3. Hybride Vererbung: Eine Kombination mehrerer Instanzen der oben genannten Vererbungstypen. Dies könnte zu einer denkbaren Kombination von Klassen führen.

Beispiele für die Vererbung in Python

Nachfolgend finden Sie Beispiele für die Vererbung in Python:

1. Einzelvererbung

Lassen Sie uns eine Klasse namens Indian Cuisine erstellen, die die Klassenküche erbt.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Wie in einer neuen Klasse gezeigt, wurde indian_cusine erstellt, das Typparameter akzeptiert und einen Basisklassenkonstruktor aufruft, der den Parameter übergibt. Es wird zusätzlich ein neuer Objektvariablenplatz angelegt . Dies wird nur in der abgeleiteten Klasse verwendet und ist für Basisklassenobjekte nicht sichtbar.

2. Hierarchische Vererbung

Lassen Sie uns eine Klasse namens ItalianCuisine erstellen, die die Klassenküche erbt:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Wie in einer neuen Klasse gezeigt, wurde italian_cusine erstellt, das Typparameter akzeptiert und einen Basisklassenkonstruktor aufruft, der den Parameter übergibt. Es wird zusätzlich ein neuer Objektvariablenplatz angelegt . Dies wird nur in der abgeleiteten Klasse verwendet und ist für Basisklassenobjekte nicht sichtbar. Nun, da zwei Klassen, indian_cusines und italian_cuisine, die Cuisine-Klasse erben, wurde eine hierarchische Vererbung implementiert.

3. Mehrfachvererbung

Erstellen wir eine Klasse namens FineDineCuisine, die von mehreren Klassen erbt.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

Die neue Klasse fine_dine_cuisine erbt sowohl von indian_cuisine als auch italian_cuisine und übernimmt deren Parameter. Es akzeptiert die Parameter type, place und portion_size. Typ und Ort werden als Argumente für Basisklassenkonstruktoren übergeben. portion_size ist ein neuer Objektparameter, der nicht für Basisklassen freigegeben ist.

Hinweis zur Diamantvererbung:

Da sowohl indian_cuisine als auch italian_cuisine von cuisine class erben, handelt es sich um einen klassischen Fall der Diamantenvererbung, bei dem mehrere Instanzen einer Basisklasse für eine abgeleitete Klasse direkt / indirekt vorhanden sind. In den meisten Sprachen wie c ++ führt dies zu einem Problem, oder es werden abstrakte Klassen verwendet. Python hingegen spezifiziert seine eigene innovative Lösung. Es erbt die allgemeinen Methoden und Attribute nur einmal, wobei Klassen in der Reihenfolge der Vererbung bevorzugt werden. Daher wird hier, da die Küche zweimal vererbt wird, die indian_cuisine-Version der Küche bevorzugt, da sie zuerst vererbt wird.

Anmerkung zu den Teilnehmern:

Jedes Attribut, das in der Klassendefinition, jedoch nicht in einer Funktion definiert ist, wird zu einem Klassenattribut und wird von allen Instanzen der Klasse gemeinsam genutzt. Wenn also ein Objekt eines dieser Klassenattribute ändert, sind die Änderungen für alle anderen Instanzen sichtbar (ob für dasselbe Klassenobjekt oder abgeleitetes Klassenobjekt). Seien Sie daher vorsichtig, wenn Sie Klassenattribute verwenden, die in keiner Methodendefinition enthalten sind.

Schlussfolgerung - Vererbung in Python

Python hat erneut eine sehr flexible, zuvorkommende und leistungsstarke Methode definiert, die verwendet werden kann, wenn das objektorientierte Paradigma der bevorzugte Weg ist. Es ist definitiv ein Konzept, das jeder nutzen kann und sollte. Diese Konzepte werden verwendet, um die Bausteine ​​jeder skalierbaren und wartbaren Software zu bilden.
Mit dieser grundlegenden Einführung in die Vererbung in Python können Sie auf konkrete Problemstellungen eingehen und feststellen, wie gut ein Entwurf ist, an den Sie denken können.

Empfohlene Artikel

Dies ist eine Anleitung zur Vererbung in Python. Hier werden die Einführung, die Syntax und die Arten der Vererbung in Python zusammen mit verschiedenen Beispielen und deren Code-Implementierung erläutert. Sie können auch unsere anderen Artikelvorschläge durchgehen -

    1. Vererbung in Java
    2. Was ist Vererbung in der Programmierung?
    3. Vererbung in C #
    4. In Java überschreiben
    5. Vererbung in PHP
    6. Deklarieren einer abstrakten Klasse in C # mit Beispiel