Vererbungsarten in Python | Python-Vererbung [mit Beispiel]

Veröffentlicht: 2021-02-09

Inhaltsverzeichnis

Einführung

Der Kampf um einen sauberen Code ist ein Kampf, an dem sich alle Programmierer beteiligen. Und dieser Kampf kann mit einer angemessenen Rüstung objektorientierter Programmierkonzepte überwunden werden. Und die richtige Nutzung von OOP-Konzepten hilft uns, die Wiederverwendbarkeit, Lesbarkeit, optimale Zeit- und Platzkomplexität des Codes zu verbessern.

Das Programmieren in Python macht super viel Spaß. Es hat eine enorme Anzahl von Bibliotheksunterstützung, objektorientierte, GUI-Programmierbarkeit macht es zu einem heißen Kuchen unter allen Programmiersprachen.

Vererbung ist eine der am häufigsten verwendeten objektorientierten Funktionen und die Implementierung in Python ist eine enthusiastische Aufgabe. Fangen wir also jetzt an!

Lassen Sie uns zunächst die Definition von Vererbung verstehen.

Nachlass

Vererbung ist ein Prozess zum Erhalten von Eigenschaften und Merkmalen (Variablen und Methoden) einer anderen Klasse. In dieser hierarchischen Ordnung wird die Klasse, die eine andere Klasse erbt, Unterklasse oder Kindklasse genannt, und die andere Klasse ist die Elternklasse.

Die Vererbung wird basierend auf der befolgten Hierarchie und der Anzahl der beteiligten Elternklassen und Unterklassen kategorisiert.

Es gibt fünf Arten von Erbschaften:

  1. Einfache Vererbung
  2. Mehrfachvererbung
  3. Vererbung auf mehreren Ebenen
  4. Hierarchische Vererbung
  5. Hybride Vererbung

Einfache Vererbung

Diese Art der Vererbung ermöglicht es einer Unterklasse oder abgeleiteten Klasse, Eigenschaften und Merkmale der Elternklasse zu erben, wodurch Duplizierung von Code vermieden und die Wiederverwendbarkeit von Code verbessert wird.

#Elternklasse
Klasse Oben :
ich = 5
def fun1 (selbst):
print( „Hallo, du bist in der Elternklasse“ )

#Unterklasse
Klasse unten (oben):
i= 10
def fun2 (selbst):
print( „Hallo, du bist in der Unterklasse“ )

temp1=Unten()
temp2=Oben()
temp1.fun1()
temp1.fun2()
temp2.fun1()
print(temp1.i)
print(temp2.i)
#temp2.fun2()

In Ordnung, gehen wir den obigen Code durch.

Im obigen Code ist „Above“ die übergeordnete Klasse und „Below“ die untergeordnete Klasse, die die übergeordnete Klasse erbt. Die Implementierung der Vererbung in Python ist eine einfache Aufgabe, wir müssen nur den Namen der übergeordneten Klasse in den Klammern der untergeordneten Klasse erwähnen. Wir erstellen Objekte sowohl der Elternklasse als auch der Kindklasse, und hier kommt ein interessanter Punkt zur Vererbung. Eine untergeordnete Klasse kann auf die Methoden und Variablen der übergeordneten Klasse zugreifen, während das Gegenteil nicht der Fall ist.

Im obigen Code kann das temp1-Objekt also sowohl auf die fun1- als auch auf die fun2-Methode zugreifen, während das temp2-Objekt nur auf die fun1-Methode zugreifen kann. Die gleiche Regel gilt auch für Variablen im Code. Und der Zugriff auf eine untergeordnete Klassenmethode oder -variable von einem übergeordneten Klassenobjekt aus löst einen Fehler aus. Wenn die letzte Zeile im Code unkommentiert ist, wird ein Fehler ausgelöst.

Mehrfachvererbung

Diese Vererbung ermöglicht es einer untergeordneten Klasse, von mehr als einer übergeordneten Klasse zu erben. Diese Art der Vererbung wird von Java-Klassen nicht unterstützt, aber Python unterstützt diese Art der Vererbung. Es hat einen enormen Vorteil, wenn wir mehrere Eigenschaften aus verschiedenen Klassen sammeln müssen.

#Elternklasse 1
Klasse A :
Demo1 = 0
def fun1 (selbst):
print(self.demo1)

#Elternklasse 2
Klasse B :
Demo2 = 0
def fun2 (selbst):
drucken (self.demo2)

#Kinderklasse
Klasse C (A, B):
def fun3 (selbst):
print( „Hallo, du bist in der Kinderklasse“ )

# Haupt code
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( “erste Zahl ist : “ ,c.demo1)
print( „zweite Zahl ist : „ ,c.demo2)

Im obigen Code haben wir zwei übergeordnete Klassen „A“, „B“ erstellt. Der Syntax der Vererbung in Python folgend, haben wir eine untergeordnete Klasse erstellt, die beide Klassen „A“ und „B“ erbt. Wie bereits erwähnt, dass eine untergeordnete Klasse auf die Methoden und Variablen der übergeordneten Klasse zugreifen kann, kann die untergeordnete Klasse „C“ auf die Methoden ihrer übergeordneten Klasse zugreifen.

Vererbung auf mehreren Ebenen

Bei der mehrstufigen Vererbung erfolgt die Übertragung der Eigenschaften von Merkmalen hierarchisch auf mehr als eine Klasse. Um eine bessere Visualisierung zu erhalten, können wir es als eine Beziehung zwischen Vorfahren und Enkelkindern oder als Wurzel und Blatt in einem Baum mit mehr als einer Ebene betrachten.

#Elternklasse 1
Klasse Fahrzeug :
def funktionierend (selbst):
print( „Fahrzeuge werden für den Transport verwendet“ )

#kinderklasse 1
Klasse Auto (Fahrzeug):
def Räder (selbst):
print( „ein Auto hat 4 Räder“ )

#kinderklasse 2
Klasse Elektroauto (Auto):
def Fachgebiet (selbst):
print( „Elektroauto fährt mit Strom“ )

elektrisch=Elektroauto()
elektrische.spezialität()
electric.wheels ()
electric.functioning ()

Nach einem Probelauf über den obigen Code haben wir eine Klasse „Fahrzeug“ erstellt, dann haben wir eine Klasse Auto erstellt, die die Klasse Fahrzeug erbt. Jetzt ist das „Fahrzeug“ eine übergeordnete Klasse und das „Auto“ eine untergeordnete Klasse. Später haben wir eine „electric_car“-Klasse erstellt, jetzt ist die Autoklasse eine übergeordnete Klasse und die electric_car-Klasse eine untergeordnete Klasse, und die Beziehung zwischen der Fahrzeugklasse und der electric_car-Klasse ist die mehrstufige Vererbung.

Hier kann die Elektroautoklasse auf die Methoden und Variablen sowohl der Fahrzeug- als auch der Autoklasse zugreifen, während die Autoklasse nur auf die Methoden und Variablen der Fahrzeugklasse zugreifen kann. Und wie besprochen kann das Fahrzeug der Elternklasse auf keine Methode der Kindklasse zugreifen.

Hierarchische Vererbung

Diese Vererbung ermöglicht es einer Klasse, als übergeordnete Klasse für mehr als eine untergeordnete Klasse oder Unterklasse zu hosten. Dies bietet den Vorteil, dass die Funktionsweise von Methoden mit mehreren untergeordneten Klassen geteilt wird, wodurch eine Codeduplizierung vermieden wird.

#Elternklasse
Klasse Eltern :
def fun1 (selbst):
print( „Hallo, du bist in der Elternklasse“ )

#kinderklasse 1
Klasse Kind1 (Elternteil):
def fun2 (selbst):
print( „Hallo, du bist in der Kinderklasse 1“ )

#kinderklasse 2
Klasse Kind2 (Elternteil):
def fun3 (selbst):
print( „Hallo, du bist in der Kinderklasse 2“ )

#kind klasse 3
Klasse Kind3 (Elternteil):
def fun4 (selbst):
print( „Hallo, du bist in der Kinderklasse 3“ )

# Hauptprogramm
child_obj1 = kind3()
child_obj2 = kind2()
child_obj3 = kind1()
child_obj1.fun1()
child_obj1.fun4()
child_obj2.fun1()
child_obj2.fun3()
child_obj3.fun1()
child_obj3.fun2()

Im obigen Code haben wir eine einzelne übergeordnete Klasse und mehrere untergeordnete Klassen, die dieselbe übergeordnete Klasse erben. Jetzt können alle untergeordneten Klassen auf die Methoden und Variablen der übergeordneten Klasse zugreifen. Wir haben eine „Eltern“-Klasse und 3 untergeordnete Klassen „Kind1“, „Kind2“, „Kind3“ erstellt, die dieselbe Elternklasse „Eltern“ erben.

Kasse: Ideen für Python-Open-Source-Projekte

Hybride Vererbung

Eine Vererbung wird als hybride Vererbung bezeichnet, wenn mehr als eine Vererbungsart im selben Code implementiert ist. Dieses Merkmal ermöglicht es dem Benutzer, das Merkmal der Vererbung optimal zu nutzen. Dies erfüllt die Anforderung, einen Code zu implementieren, der mehrere Vererbungen bei der Implementierung benötigt.

Klasse a:
def Spaß1 (selbst):
print("Hallo, Sie sind in Klasse A")Klasse B(A):
def fun2(selbst):
print("Hallo, Sie sind in Klasse B")Klasse C(A):
def fun3(selbst):
print(“Hey, du bist in Klasse C”)class D(C,A): #line 13
def fun4(selbst):
print(“Hallo, Sie sind in der Klasse D”)#main program
ref = D ()
ref.fun4()
ref.fun3()
ref.fun1()

Im obigen Code können wir sehen, dass wir mehr als einen Vererbungstyp implementiert haben. Die Klassen A, B, C implementieren die hierarchische Vererbung, und die Klassen A, C, D implementieren die Vererbung auf mehreren Ebenen. Nein, diese individuellen Vererbungen haben ihre individuellen Eigenschaften für den Zugriff auf Methoden und Variablen der Elternklasse. Außerdem gibt es einen Punkt zu beachten.

Wenn wir die mehrstufige Vererbung implementieren, folgen wir einer Syntax wie „child_class(parent_class1, parent_class2)“. Aber diese Syntax löst einen Fehler aus, wenn „parent_class1“ hierarchisch über „parent_class2“ liegt. Wenn wir diese Syntax implementieren wollen, dann muss die „parent_class1“ auf einer hierarchisch niedrigeren Ebene liegen als „parent_class2“. Wenn beispielsweise im obigen Code Zeile 13 eine Syntaxklasse D (A, C) hat, würde der Code nicht funktionieren, da Klasse C hierarchisch niedriger als Klasse A ist.

Lernen Sie Datenwissenschaftskurse von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Lesen Sie: Ideen und Themen für Python-Projekte

Fazit

Wir sind die Verwendungen und Bedürfnisse der Vererbung durchgegangen und haben die Definition der Vererbung verstanden. Außerdem sind wir die Arten der Vererbung durchgegangen und sind die Implementierungscodes und Erläuterungen zu jeder Art der Vererbung durchgegangen. Die Regeln des Variablen- und Methodenzugriffs bei verschiedenen Arten von Vererbungen verstanden.

Da Sie sich nun der verschiedenen Arten von Vererbungen in Python bewusst sind, versuchen Sie, sie zu implementieren und in Ihrem Code zu verwenden. Versuchen Sie, Ihren Code mit der richtigen Verwendung der Vererbung zu optimieren.

Wenn Sie neugierig sind, etwas über Data Science zu lernen, schauen Sie sich das PG Diploma in Data Science von IIIT-B & upGrad an, das für Berufstätige entwickelt wurde und mehr als 10 Fallstudien und Projekte, praktische Workshops, Mentoring mit Branchenexperten, 1- on-1 mit Mentoren aus der Branche, mehr als 400 Stunden Lern- und Jobunterstützung bei Top-Unternehmen.

Was ist der Unterschied zwischen Mehrfachvererbung und mehrstufiger Vererbung?

Viele Programmieranfänger werden oft zwischen Mehrfachvererbung und Vererbung auf mehreren Ebenen verwechselt. Im Folgenden werden einige der wesentlichen Unterschiede zwischen diesen beiden Vererbungsarten veranschaulicht.
Mehrfachvererbung -
1. Wenn eine untergeordnete Klasse ihre Eigenschaften und Merkmale von mehr als einer Basisklasse erbt, wird diese Art der Vererbung als Mehrfachvererbung bezeichnet.
2. Es ist nicht weit verbreitet, da die Mehrfachvererbung recht komplex zu verstehen sein kann.
3. Es hat nur zwei Klassenebenen: Basisklasse und abgeleitete Klasse.
Vererbung auf mehreren Ebenen
1. Die Vererbung, bei der eine untergeordnete Klasse die Eigenschaften von ihrer Basisklasse erbt, die die Eigenschaften weiter von einer anderen Basisklasse erbt, wodurch erstere zu einer untergeordneten Klasse wird, wird als mehrstufige Vererbung bezeichnet.
2. Dieses Erbe dient großen Zwecken und wird daher sehr häufig verwendet.
3. Sie hat mindestens drei Klassenebenen: Basisklasse, Zwischenklasse und abgeleitete Klasse.

Was verstehen Sie unter hybrider Vererbung?

Die hybride Vererbung ist eine einzigartige Art der Vererbung. Anstatt ein neues Konzept zu haben, handelt es sich, wie der Name schon sagt, um eine Kombination aus zwei oder mehr Arten von Erbschaften. Beispielsweise ist eine Klasse, die sowohl mehrere als auch mehrstufige Vererbungen zeigt, ein Beispiel für hybride Vererbung.

Was wissen Sie über Zugriffsmodifikatoren in Python?

In Python gibt es 3 Arten von Zugriffsmodifikatoren, die unten erwähnt werden:
1. Öffentlicher Zugriffsmodifikator – Die öffentlichen Mitglieder einer Klasse sind für jeden Teil des Programms zugänglich. Wenn in Python der Zugriffsbezeichner von Datenmembern oder Memberfunktionen nicht angegeben ist, ist er standardmäßig öffentlich.
2. Geschützter Zugriffsmodifikator – Wenn ein Datenelement oder eine Elementfunktion als geschützt definiert ist, dann ist es nur für die abgeleiteten Klassen dieser Klasse zugänglich.
3. Privater Zugriffsmodifikator – Der private Zugriffsmodifikator ist der sicherste Zugriffsspezifizierer. Auf die privaten Mitglieder kann nur innerhalb der Klasse zugegriffen werden, in der sie definiert sind.