Python Inheritance

Python Inheritance

Inheritance laat ons een klasse definiëren die alle methoden en eigenschappen van een andere klasse overneemt.

BasisklasseIs een klasse die van een andere klasse afgeleid is, ook wel basisklasse genoemd.

SubklasseIs een klasse die van een andere klasse afgeleid is, ook wel afgeleide klasse genoemd.

Basisklasse maken

Elke klasse kan een basisklasse zijn, dus de syntaxis is dezelfde als voor het maken van elke andere klasse:

Instance

Maak een klasse genaamd Person, met eigenschappen firstname en lastname en de methode printname:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.lastname = lname
  def printname(self):
    print(self.firstname, self.lastname)
# Maak een object aan met behulp van Person en voer vervolgens de printname methode uit:
x = Person("Bill", "Gates")
x.printname()

Run Instance

Maak een subklasse aan

Om een klasse te maken die functionaliteiten van andere klassen erfde, stuur dan de ouderklasse als parameter door bij het maken van de subklasse:

Instance

Maak een klasse genaamd Student aan die de eigenschappen en methoden van de Person klasse erfde:

class Student(Person):
  pass

Opmerking:Als u geen andere eigenschappen of methoden wilt toevoegen aan deze klasse, gebruik dan pass sleutelwoord.

Nu heeft de Student klasse dezelfde eigenschappen en methoden als de Person klasse.

Instance

Maak een object aan met behulp van de Student klasse en voer vervolgens de printname methode uit:

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

Run Instance

Voeg __init__() functie toe

tot nu toe hebben we een subklasse gemaakt die de eigenschappen en methoden van de ouderklasse erfde.

we willen dat __init__() functie toe aan de subklasse (niet pass sleutelwoord).

Opmerking:Elke keer dat een nieuwe object wordt gemaakt met behulp van de klasse, wordt automatisch de __init__() functie aangeroepen.

Instance

Voeg een __init__() functie toe aan de Student klasse:

class Student(Person):
  def __init__(self, fname, lname):
    # Voeg eigenschappen toe, enz.

Wanneer u de __init__() functie toevoegt, zal de subklasse de __init__() functie van de ouderklasse niet meer erven.

Opmerking:De __init__() functie van de zoon overschrijft de erfstructuur van de __init__() functie van de ouder.

Als u de erfstructuur van de __init__() functie van de ouderklasse wilt behouden, voeg dan een aanroep van de __init__() functie van de ouderklasse toe:

Instance

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

Run Instance

Nu hebben we succesvol de __init__() functie toegevoegd en de erfstructuur van de ouderklasse behouden, we zijn klaar om functionaliteit toe te voegen aan de __init__() functie.

het gebruik van de super() functie

Python heeft ook een super() functie, het maakt het mogelijk voor de subklasse om alle methoden en eigenschappen van de ouderklasse te erven:

Instance

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

Run Instance

door gebruik te maken van super() functie, u hoeft de naam van het ouder-element niet te gebruiken, het zal automatisch methoden en eigenschappen van het ouder-element erven.

voeg eigenschappen toe

Instance

Add a method named graduationyear de eigenschappen toevoegen aan Student klasse:

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

Run Instance

In this example, 2019 should be a variable, and passed to the Student class when creating the student object. To do this, add another parameter to the __init__() function:

Instance

Add year parameters, and pass the correct year when creating an object:

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

Run Instance

Add Method

Instance

Add a method named welcome Add the method to the Student class:

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)

Run Instance

Tip:If you add a method with the same name as a function in the superclass in the subclass, the superclass method will be overridden by inheritance.