Python -Vererbung
Python-Vererbung
Vererbung ermöglicht es uns, eine Klasse zu definieren, die alle Methoden und Eigenschaften von einer anderen Klasse erbt.
Die Elternklasse ist die Klasse, von der geerbt wird, auch Basisklasse genannt.
Kindklasse ist die Klasse, die von einer anderen Klasse erbt, auch abgeleitete Klasse genannt.
Erstellen Sie eine übergeordnete Klasse
Jede Klasse kann eine übergeordnete Klasse sein, daher ist die Syntax dieselbe wie beim Erstellen jeder anderen Klasse:
Beispiel
Erstellen Sie eine Klasse mit dem Namen Person
, mit
den Eigenschaften und und einer firstname
Methode :lastname
printname
class Person:
def __init__(self, fname, lname):
self.firstname = fname
self.lastname = lname
def printname(self):
print(self.firstname,
self.lastname)
#Use the Person class to create an object, and then
execute the printname method:
x = Person("John", "Doe")
x.printname()
Erstellen Sie eine untergeordnete Klasse
Um eine Klasse zu erstellen, die die Funktionalität von einer anderen Klasse erbt, senden Sie beim Erstellen der untergeordneten Klasse die übergeordnete Klasse als Parameter:
Beispiel
Erstellen Sie eine Klasse namens Student
, die die Eigenschaften und Methoden von der Klasse erbt Person
:
class Student(Person):
pass
Hinweis: Verwenden Sie das pass
Schlüsselwort, wenn Sie der Klasse keine weiteren Eigenschaften oder Methoden hinzufügen möchten.
Jetzt hat die Student-Klasse die gleichen Eigenschaften und Methoden wie die Person-Klasse.
Beispiel
Verwenden Sie die Student
Klasse, um ein Objekt zu erstellen, und führen Sie dann die printname
Methode aus:
x = Student("Mike", "Olsen")
x.printname()
Fügen Sie die __init__()-Funktion hinzu
Bisher haben wir eine untergeordnete Klasse erstellt, die die Eigenschaften und Methoden von ihrer übergeordneten Klasse erbt.
Wir möchten die __init__()
Funktion zur untergeordneten Klasse hinzufügen (anstelle des pass
Schlüsselworts).
Hinweis: Die __init__()
Funktion wird jedes Mal automatisch aufgerufen, wenn die Klasse verwendet wird, um ein neues Objekt zu erstellen.
Beispiel
Fügen Sie die __init__()
Funktion der
Student
Klasse hinzu:
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
Wenn Sie die Funktion hinzufügen __init__()
, erbt die untergeordnete Klasse nicht mehr die __init__()
Funktion der übergeordneten Klasse.
Hinweis:__init__()
Die
Funktion des Kindes überschreibt die Vererbung der
__init__()
Funktion des Elternteils.
Um die Vererbung der übergeordneten __init__()
Funktion beizubehalten, fügen Sie der übergeordneten Funktion einen Aufruf hinzu __init__()
:
Beispiel
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
Jetzt haben wir die Funktion __init__() erfolgreich hinzugefügt und die Vererbung der übergeordneten Klasse beibehalten, und wir sind bereit, Funktionalität in der
__init__()
Funktion hinzuzufügen.
Verwenden Sie die super()-Funktion
Python hat auch eine super()
Funktion, die die untergeordnete Klasse dazu bringt, alle Methoden und Eigenschaften von ihrer übergeordneten Klasse zu erben:
Beispiel
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
Wenn Sie die super()
Funktion verwenden, müssen Sie nicht den Namen des übergeordneten Elements verwenden, es erbt automatisch die Methoden und Eigenschaften von seinem übergeordneten Element.
Eigenschaften hinzufügen
Beispiel
Fügen Sie graduationyear
der
Student
Klasse eine Eigenschaft namens hinzu:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear
= 2019
Im Beispiel unten sollte das Jahr 2019
eine Variable sein und
Student
beim Erstellen von Schülerobjekten an die Klasse übergeben werden. Fügen Sie dazu einen weiteren Parameter in der Funktion __init__() hinzu:
Beispiel
Fügen Sie einen year
Parameter hinzu und übergeben Sie beim Erstellen von Objekten das richtige Jahr:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
x = Student("Mike", "Olsen", 2019)
Methoden hinzufügen
Beispiel
Fügen Sie welcome
der
Student
Klasse eine aufgerufene Methode hinzu:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
def welcome(self):
print("Welcome",
self.firstname, self.lastname, "to the class of", self.graduationyear)
Wenn Sie in der untergeordneten Klasse eine Methode mit demselben Namen wie eine Funktion in der übergeordneten Klasse hinzufügen, wird die Vererbung der übergeordneten Methode außer Kraft gesetzt.