Python Tutorial - Klassenvererbung

Jinku Hu 30 März 2021
  1. Python Class Inheritance Method Overriding
  2. Python Klasse Mehrfachvererbung
  3. Python Klasse Mehrstufige Vererbung
Python Tutorial - Klassenvererbung

In diesem Abschnitt lernen Sie die Vererbung der objektorientierten Programmierung in Python kennen.

Bei der Vererbung wird eine Unterklasse von einer Elternklasse angelegt. Die Unterklasse erbt alles (Daten-Member und Memberfunktionen) von der Elternklasse.

Im Folgenden wird die Syntax der Vererbung in Python beschrieben:

class ParentClass:
    # members


class ChildClass(ParentClass):
    # members

In der Unterklasse stehen alle Eigenschaften der Elternklasse zur Verfügung und es können auch neue Funktionalitäten hinzugefügt werden.

Wie im untenstehenden Beispiel hat sie eine Elternklasse namens Auto und eine Kindklasse Car wird von ihr geerbt.

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
Name of Auto:  Prius
Engine of auto:  1.5l

Sie können hier sehen, dass die Methoden der Klasse Auto in der Klasse Car verwendet werden können. Das liegt daran, dass Auto von Auto geerbt wird.

Innerhalb des Konstruktors von Auto wird der Konstruktor von Auto aufgerufen. Das Objekt von Car kann verwendet werden, um alle Methoden von Auto aufzurufen.

Python Class Inheritance Method Overriding

Methodenüberschreibung ist, wenn Sie die gleichen Methoden sowohl für Unter- als auch für Elternklassen haben. Das Übersteuern von Methoden ist im Grunde ein Konzept, bei dem eine Unterklasse die Implementierung von Methoden ihrer Elternklasse ändert.

Betrachten wir das Beispiel, bei dem die Kindklasse Auto die gleiche display-Methode wie in der Auto-Klasse hat, aber die Implementierung geändert wird:

>>> class Auto:
	def __init__(self, e, n):
		self.engine = e
		self.name = n
	def display(self):
		print("Name of Auto: ", self.name)
		print("Engine of auto: ", self.engine)

		
>>> class Car(Auto):
	def __init__(self):
		self.x= input("Enter name of car: ")
		self.y= input("Enter engine of car: ")
		Auto.__init__(self,self.y,self.x)
    def display(self):
		print("You are in child class")

		
>>> c = Car()
Enter name of car: Prius
Enter engine of car: 1.5l
>>> c.display()
You are in child class

Wenn nun die Display-Methode im Objekt c aufgerufen wird, wird die Methode der Kindklasse aufgerufen.

Python Klasse Mehrfachvererbung

Mehrfachvererbung geschieht, wenn eine Unterklasse mehr als eine Elternklasse hat. Die Funktionalität jeder Elternklasse wird an die Tochterklasse vererbt.

Im Folgenden wird die Syntax der Mehrfachvererbung beschrieben:

class A:
    # members


class B:
    # members


class child(A, B):
    # members

Beispiel:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B:
	def dispB(self):
		print('You are in class B')

		
>>> class C(A, B):
	def dispC(self):
		print('You are in class C')

>>> Cobj = C()
>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

Es ist zu beachten, dass das Objekt von C (Unterklasse) die Methoden seiner Elternklassen A und B aufrufen kann. Daher kann man sagen, daß C alles von A und B erbt.

Python Klasse Mehrstufige Vererbung

Mehrstufige Vererbung ist, wenn Sie eine Unterklasse von einer anderen Unterklasse erben.

Die Syntax der mehrstufigen Vererbung ist wie folgt:

class A:
    # members


class B(A):
    # members


class C(B):
    # members

Beispiel:

>>> class A:
	def dispA(self):
		print('You are in class A')

		
>>> class B(A):
	def dispB(self):
		print('You are in class B')

		
>>> class C(B):
	def dispC(self):
		print('You are in class C')
        
>>> Cobj = C()

>>> Cobj.dispA()
You are in class A

>>> Cobj.dispB()
You are in class B

>>> Cobj.dispC()
You are in class C

Sie könnten hier sehen, dass die Klasse C die Methoden ihrer Eltern- und Großelternklassen aufrufen kann.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook