Python Inheritance
- Previous Page Python Class/Object
- Next Page Python Iteration
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()
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()
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)
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)
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
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)
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)
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.
- Previous Page Python Class/Object
- Next Page Python Iteration