Python je objektově orientovaný programovací jazyk. V objektově orientovaném programovacím jazyce vytváříme třídy a provádíme zamýšlenou funkčnost. Dědičnost je základní vlastností objektově orientovaných programovacích jazyků. Dědičnost lze definovat jako schopnost jedné třídy zdědit všechny funkce a vlastnosti jiné třídy. Dědičnost v zásadě umožňuje rozšířit vlastnosti existující třídy. Dědičnost je využívána dvěma hlavními koncepty:
- Nadřazená třída nebo základní třída
- Podřízená třída nebo odvozená třída
Nadřazená třída je třída, která umožňuje zdědit další třídy. Nazývá se také základní třída. Třída Child nebo odvozená třída je třída, která dědí všechny vlastnosti a funkce jiné třídy. Dědičnost podporuje několik výhod, tj.E., je to reprezentace fenoménu dědičnosti v reálném světě. Podporuje opětovné použití kódu. Pokud je funkce definována v jedné třídě, druhá třída může tuto třídu zdědit a používat všechny existující funkce. Pro provádění podobných úkolů není třeba znovu a znovu psát stejný kód. Dědičnost se používá na několika úrovních. Například pokud je třída B zděděna z A a třída C je zděděna z třídy B, pak má třída C všechny vlastnosti třídy B a také třídy A. Syntaxe dědičnosti je následující:
Třída ParentClass:Podrobnosti implementace nadřazené třídy
třída ChildClass:
Podrobnosti implementace podřízené třídy
Ačkoli má podřízená třída přístup ke všem funkcím a funkcím nadřazené třídy, může přidávat také své nové funkce a funkce.
Tento článek popisuje a pokrývá všechny aspekty dědičnosti Pythonu.
Implementace dědičnosti v Pythonu
Dědičnost lze uplatnit v mnoha situacích. Předpokládejme, že budujete softwarový systém pro univerzitu. Může se skládat z několika zúčastněných stran, jako jsou studenti, učitelé, zaměstnanci atd. Každý člověk má tedy jméno, věk, e-mail a další společné vlastnosti. Není nutné deklarovat všechny vlastnosti v každé třídě zvlášť. Můžeme vytvořit třídu osob a všechny třídy zúčastněných stran mohou zdědit všechny společné vlastnosti a funkce z třídy osob. V tomto případě není nutné znovu a znovu psát společné vlastnosti v každé třídě. Podobně můžeme uvažovat o zvířecí třídě. Na tomto světě existují stovky druhů zvířat. Všechna zvířata jedí, spí a mají také některé druhy. Tento koncept lze také implementovat pomocí dědičnosti.
Uvažujme o zvířeti jako o super třídě a implementujme dědictví. V níže uvedeném příkladu jsme vytvořili jednu třídu zvířat. Třída zvířat je rodičovská třída. Kromě toho jsme vytvořili třídy Pes a Kočka, které zdědily vlastnosti a funkce třídy zvířat. Klíčové slovo pass se používá v podřízené třídě, když v podřízené třídě nemusíme implementovat žádné rozšířené funkce.
#vytvoření rodičovské třídytřída Zvíře:
# inicializační funkce
#initilizace názvu zvířete a druhu specie
def __init __ (self, name, specie_type):
já.jméno = jméno
já.specie_type = specie_type
Funkce #a pro tisk názvu zvířete
def printname (self):
print ("Název zvířete je:", self.název)
Funkce #a pro tisk typu zvířecího druhu
def printspecie (self):
print ("Typ druhu je:", vlastní.specie_type)
# Vytvoření třídy psa jako dětské třídy třídy zvířat
třída pes (zvíře):
# žádné rozšíření ani úpravy
složit
# now dog class mají přístup ke všem funkcím a vlastnostem třídy zvířat
# vytvoření objektu třídy psa
dogObj = Pes („Pes“, „masožravec“)
pesObj.printname ()
pesObj.printspecie ()
# Vytvoření třídy koček jako dětské třídy třídy zvířat
třída Kočka (zvíře):
#inicializační funkce třídy koček
def __init __ (vlastní):
#volání a používání funkce inicializace třídy zvířat
Zvíře.__init __ (já, „kočka“, „masožravý savec“)
Třída #now cat má přístup ke všem funkcím a vlastnostem třídy zvířat
# vytvoření objektu třídy kočka
catObj = Cat ()
catObj.printname ()
catObj.printspecie ()
Výstup
The "Zvíře.__init __ (já, „kočka“, „masožravý savec“) “ call je inicializační funkce třídy Animal.
Funkce super ()
Python poskytuje vestavěnou funkci super (), která zdědí všechny vlastnosti a funkce nadřazené třídy. Když použijeme funkci super (), není třeba zmínit název nadřazené třídy, jako jsme to udělali "Zvíře.__init __ (já, „kočka“, „masožravý savec“) “ ale funkce super () automaticky ukazuje na nadřazenou třídu. Pojďme použít super funkci.
#vytvoření rodičovské třídytřída Zvíře:
# inicializační funkce
#initilizace názvu zvířete a druhu specie
def __init __ (self, name, specie_type):
já.jméno = jméno
já.specie_type = specie_type
Funkce #a pro tisk názvu zvířete
def printname (self):
print ("Název zvířete je:", self.název)
Funkce #a pro tisk typu zvířecího druhu
def printspecie (self):
print ("Typ druhu je:", vlastní.specie_type)
# Vytvoření třídy psa jako dětské třídy třídy zvířat
třída pes (zvíře):
# pomocí funkce super ()
def __init __ (self, name, specie_type):
super ().__init __ (name, specie_type)
# now dog class mají přístup ke všem funkcím a vlastnostem třídy zvířat
#vytvoření objektu třídy psa
dogObj = Pes („Pes“, „masožravec“)
pesObj.printname ()
pesObj.printspecie ()
# Vytvoření třídy koček jako dětské třídy třídy zvířat
třída Kočka (zvíře):
#inicializační funkce třídy koček
# pomocí funkce super ()
def __init __ (self, name, specie_type):
super ().__init __ (name, specie_type)
Třída #now cat má přístup ke všem funkcím a vlastnostem třídy zvířat
# vytvoření objektu třídy kočka
catObj = kočka („kočka“, „masožravý savec“)
catObj.printname ()
catObj.printspecie ()
Výstup
Nyní přidejme některé další funkce do podřízených tříd. Každá třída dědí společné vlastnosti a funkce z nadřazené třídy, ale podřízená třída může mít nějakou třídu navíc, která je určena pro tuto konkrétní třídu. Nyní vytvořme některé další vlastnosti a funkce ve třídě psů a koček.
#vytvoření rodičovské třídytřída Zvíře:
# inicializační funkce
#initilizace názvu zvířete a druhu specie
def __init __ (self, name, specie_type):
já.jméno = jméno
já.specie_type = specie_type
Funkce #a pro tisk názvu zvířete
def printname (self):
print ("Název zvířete je:", self.název)
Funkce #a pro tisk typu zvířecího druhu
def printspecie (self):
print ("Typ druhu je:", vlastní.specie_type)
# Vytvoření třídy psa jako dětské třídy třídy zvířat
třída pes (zvíře):
# pomocí funkce super ()
#pet name je nově přidaná funkce
def __init __ (self, name, specie_type, pet_name):
super ().__init __ (name, specie_type)
já.pet_name = pet_name
#vytvoření nové funkce
def printpetname (self):
print ("Jméno zvířete je:", self.jméno mazlíčka)
# now dog class mají přístup ke všem funkcím a vlastnostem třídy zvířat
# vytvoření objektu třídy psa
dogObj = Pes ("Pes", "masožravec", "Max")
pesObj.printname ()
pesObj.printspecie ()
pesObj.printpetname ()
# Vytvoření třídy koček jako dětské třídy třídy zvířat
třída Kočka (zvíře):
#inicializační funkce třídy koček
# pomocí funkce super ()
#adding food and pet_name properties
def __init __ (self, name, specie_type, food, pet_name):
super ().__init __ (name, specie_type)
já.jídlo = jídlo
já.pet_name = pet_name
# nová funkce pro přístup k informacím o jídle
def printfood (vlastní):
print ("Kočka má ráda:", já.jídlo)
# nová funkce pro jméno mazlíčka
def printpetname (self):
print ("Jméno zvířete je:", self.jméno mazlíčka)
Třída #now cat má přístup ke všem funkcím a vlastnostem třídy zvířat
# vytvoření objektu třídy kočka
catObj = kočka („kočka“, „masožravý savec“, „sušenka“, „sedmikráska“)
catObj.printname ()
catObj.printspecie ()
Výstup
Funkce mají přednost
Funkce přepsání je důležitý pojem v dědičnosti. Funkce se nazývá přepsaná funkce, pokud je název funkce stejný v nadřazených a podřízených třídách, ale implementace nebo funkčnost funkce se v každé třídě liší. Podívejme se na příklad přepsané funkce ve třídě Animal. V níže uvedeném příkladu máme funkci jíst ve třídách zvířat a také v jejich podřízených třídách (pes a kočka). Název funkce je ve třídách stejný, ale implementace se liší.
#vytvoření rodičovské třídytřída Zvíře:
def jíst (já):
tisk ("Všechna zvířata jedí jídlo")
# vytvoření objektu
animalObj = Animal ()
funkce #calling
zvířeObj.jíst()
#tvoření třídy psů
třída pes (zvíře):
def jíst (já):
tisk ("Pes jí maso")
# vytvoření objektu
dogObj = Pes ()
funkce #calling
pesObj.jíst()
třída Kočka (zvíře):
def jíst (já):
tisk („Kočka jedí sušenky a speciální jídlo“)
# vytvoření objektu
catObj = Cat ()
funkce #calling
catObj.jíst()
Výstup
Závěr
Dědičnost je jedním ze základních konceptů objektově orientovaných programovacích jazyků. Použitím dědičnosti vytvoříme podřízené třídy, které zdědí všechny funkce a vlastnosti nadřazené třídy. Dědičnost podporuje opětovné použití kódu. Tento článek vysvětluje dědičnost v Pythonu pomocí příkladů.