Python-Vererbung

Python-Vererbung

Die Vererbung ermöglicht es uns, Klassen zu definieren, die alle Methoden und Attribute einer anderen Klasse enthalten.

BasisklasseIst eine abgeleitete Klasse und auch als Basisklasse bezeichnet.

Abgeleitete KlasseIst eine Klasse, die von einer anderen Klasse abgeleitet ist und auch als Ableitungsklasse bezeichnet wird.

Erstellen Sie eine Basisklasse

Jegliche Klasse kann eine Basisklasse sein, daher ist die Syntax ähnlich wie beim Erstellen jeder anderen Klasse:

Beispiel

Erstellen Sie eine Klasse namens Person, die die Attribute firstname und lastname sowie die Methode printname enthält:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
# Erstellen Sie ein Objekt mit Person und führen Sie dann die Methode printname aus:
x = Person("Bill", "Gates")
x.printname()

Führen Sie das Beispiel aus

Erstellen Sie eine Unterklasse

Um eine Klasse zu erstellen, die Funktionen von anderen Klassen inheritiert, senden Sie das Überklasse als Parameter bei der Erstellung der Unterklasse:

Beispiel

Erstellen Sie eine Klasse namens Student, die die Eigenschaften und Methoden der Klasse Person inheritiert:

class Student(Person):
  pass

Kommentar:Wenn Sie keine anderen Eigenschaften oder Methoden zur Klasse hinzufügen möchten, verwenden Sie pass Schlüsselwort.

Jetzt hat die Klasse Student die gleichen Eigenschaften und Methoden wie die Klasse Person.

Beispiel

Erstellen Sie ein Objekt der Klasse Student und führen Sie dann die Methode printname aus:

x = Student("Elon", "Musk")
x.printname()

Führen Sie das Beispiel aus

Fügen Sie __init__() hinzu

Bis jetzt haben wir eine Unterklasse erstellt, die die Eigenschaften und Methoden der Überklasse inheritiert.

Wir möchten, dass wir __init__() Funktion zum Kind hinzufügen (statt pass Schlüsselwort).

Kommentar:Bei jeder Verwendung der Klasse zur Erstellung eines neuen Objekts wird automatisch die Funktion __init__() aufgerufen.

Beispiel

Fügen Sie die Funktion __init__() zur Klasse Student hinzu:

class Student(Person):
  def __init__(self, fname, lname):
    # Eigenschaften hinzufügen

Wenn Sie die Funktion __init__() hinzufügen, wird die Unterklasse nicht mehr die Funktion __init__() des Überklasses inheritieren.

Kommentar:Die Funktion __init__() des Kindes überschreibt die Vererbung der Funktion __init__() des Überklasses.

Um die Vererbung der Funktion __init__() des Überklasses beizubehalten, fügen Sie den Aufruf der Funktion __init__() des Überklasses hinzu:

Beispiel

class Student(Person):
  def __init__(self, fname, lname):
    Person.__init__(self, fname, lname)

Führen Sie das Beispiel aus

Jetzt, nachdem wir erfolgreich die Funktion __init__() hinzugefügt haben und die Vererbung der Überklasse beibehalten haben, sind wir bereit, Funktionen im Funktion __init__() hinzuzufügen.

durch die Verwendung der super() Funktion

Python hat auch eine super() es ermöglicht es der Unterklasse, alle Methoden und Eigenschaften von ihrem Überklasse zu inheritieren:

Beispiel

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)

Führen Sie das Beispiel aus

durch die Verwendung der Funktion super() Funktion, Sie müssen den Namen des übergeordneten Elements nicht verwenden, sie wird automatisch Methoden und Eigenschaften von seinem übergeordneten Element inheritieren.

Eigenschaften hinzuzufügen

Beispiel

Nennen Sie graduationyear die Eigenschaften hinzuzufügen Student Klasse:

class Student(Person):
  def __init__(self, fname, lname):
    super().__init__(fname, lname)
    self.graduationyear = 2019

Führen Sie das Beispiel aus

In diesem Beispiel sollte 2019 eine Variable sein und beim Erstellen des student-Objekts an die Klasse Student weitergegeben werden. Fügen Sie daher einen weiteren Parameter in die Funktion __init__() hinzu:

Beispiel

Fügen Sie hinzu year Parameter, und geben Sie bei der Erstellung des Objekts die richtigen Jahre weiter:

class Student(Person):
  def __init__(self, fname, lname, year)
    super().__init__(fname, lname)
    self.graduationyear = year
x = Student("Elon", "Musk", 2019)

Führen Sie das Beispiel aus

Fügen Sie die Methode hinzu

Beispiel

Nennen Sie willkommen Fügen Sie die Methode zu der Klasse Student hinzu:

class Student(Person):
  def __init__(self, fname, lname, year):
    super().__init__(fname, lname)
    self.graduationyear = year
  def willkommen(self):
    print("Willkommen", self.firstname, self.lastname, "in der Klasse von", self.graduationyear)

Führen Sie das Beispiel aus

Hinweis:Fügen Sie eine Methode mit dem gleichen Namen wie eine Methode im Überklasse hinzu, und die übergeordnete Methode wird überschrieben.