Dědičnost Pythonu
Dědičnost Pythonu
Dědičnost nám umožňuje definovat třídu, která zdědí všechny metody a vlastnosti z jiné třídy.
Nadřazená třída je třída, ze které se dědí, nazývaná také základní třída.
Podřízená třída je třída, která dědí z jiné třídy, nazývaná také odvozená třída.
Vytvořte nadřazenou třídu
Každá třída může být rodičovskou třídou, takže syntaxe je stejná jako při vytváření jakékoli jiné třídy:
Příklad
Vytvořte třídu s názvem Person
, s
vlastnostmi a a firstname
metodu :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()
Vytvořte podřízenou třídu
Chcete-li vytvořit třídu, která zdědí funkce z jiné třídy, odešlete při vytváření podřízené třídy jako parametr nadřazenou třídu:
Příklad
Vytvořte třídu s názvem Student
, která zdědí vlastnosti a metody ze Person
třídy:
class Student(Person):
pass
Poznámka: Klíčové slovo použijte, pass
pokud nechcete do třídy přidávat žádné další vlastnosti nebo metody.
Nyní má třída Student stejné vlastnosti a metody jako třída Osoba.
Příklad
Použijte Student
třídu k vytvoření objektu a poté spusťte printname
metodu:
x = Student("Mike", "Olsen")
x.printname()
Přidejte funkci __init__()
Zatím jsme vytvořili podřízenou třídu, která dědí vlastnosti a metody od svého rodiče.
Chceme přidat __init__()
funkci do podřízené třídy (místo pass
klíčového slova).
Poznámka: Funkce __init__()
je volána automaticky pokaždé, když je třída použita k vytvoření nového objektu.
Příklad
Přidejte __init__()
funkci do
Student
třídy:
class Student(Person):
def __init__(self, fname, lname):
#add properties etc.
Když přidáte __init__()
funkci, podřízená třída již nebude dědit rodičovskou __init__()
funkci.
Poznámka:__init__()
Funkce potomka přepíše dědění funkce rodiče
__init__()
.
Chcete-li zachovat dědičnost funkce rodiče __init__()
, přidejte volání funkce rodiče __init__()
:
Příklad
class Student(Person):
def __init__(self, fname, lname):
Person.__init__(self, fname, lname)
Nyní jsme úspěšně přidali funkci __init__() a zachovali jsme dědičnost nadřazené třídy a jsme připraveni přidat funkcionalitu do
__init__()
funkce.
Použijte funkci super().
Python má také super()
funkci, díky které podřízená třída zdědí všechny metody a vlastnosti od svého rodiče:
Příklad
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
Při použití super()
funkce nemusíte používat název nadřazeného prvku, ten automaticky zdědí metody a vlastnosti od svého rodiče.
Přidat vlastnosti
Příklad
Přidejte vlastnost volanou graduationyear
do
Student
třídy:
class Student(Person):
def __init__(self, fname, lname):
super().__init__(fname, lname)
self.graduationyear
= 2019
V níže uvedeném příkladu 2019
by měl být rok proměnnou a předán
Student
třídě při vytváření objektů studentů. Chcete-li tak učinit, přidejte do funkce __init__() další parametr:
Příklad
Přidejte year
parametr a při vytváření objektů zadejte správný rok:
class Student(Person):
def __init__(self, fname, lname, year):
super().__init__(fname, lname)
self.graduationyear
= year
x = Student("Mike", "Olsen", 2019)
Přidat metody
Příklad
Přidejte metodu volanou welcome
do
Student
třídy:
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)
Pokud přidáte metodu do podřízené třídy se stejným názvem jako funkce v nadřazené třídě, bude přepsána dědičnost nadřazené metody.