Python je objektovo orientovaný programovací jazyk. V objektovo orientovanom programovacom jazyku vytvárame triedy a vykonávame zamýšľanú funkčnosť. Dedičnosť je základnou vlastnosťou objektovo orientovaných programovacích jazykov. Dedičnosť možno definovať ako schopnosť jednej triedy dediť všetky funkcie a vlastnosti inej triedy. Dedenie v zásade umožňuje rozšíriť vlastnosti existujúcej triedy. Dedenie sa využíva pomocou dvoch hlavných konceptov:
- Rodičovská trieda alebo základná trieda
- Detská trieda alebo odvodená trieda
Rodičovská trieda je trieda, ktorá umožňuje dediť ďalšie triedy. Nazýva sa tiež Základná trieda. Dieťa trieda alebo odvodená trieda je trieda, ktorá dedí všetky vlastnosti a funkcie inej triedy. Dedenie podporuje niekoľko výhod, t.e., je to reprezentácia fenoménu dedičstva v reálnom svete. Podporuje opätovné použitie kódu. Ak je funkcia definovaná v jednej triede, druhá trieda môže túto triedu dediť a používať všetky existujúce funkcie. Na vykonávanie podobných úloh nie je potrebné písať stále ten istý kód. Dedenie sa uplatňuje na viacerých úrovniach. Napríklad ak sa trieda B dedí z A a trieda C sa dedí z triedy B, potom má trieda C všetky vlastnosti triedy B a rovnako ako triedy A. Syntax dedičstva je nasledovná:
Nadradená trieda:Podrobnosti o implementácii nadradenej triedy
trieda ChildClass:
Podrobnosti o implementácii triedy dieťaťa
Aj keď má podradená trieda prístup ku všetkým funkciám a funkciám nadradenej triedy, môže pridávať aj svoje nové funkcie a funkcie.
Tento článok popisuje a pokrýva všetky aspekty dedenia Pythonu.
Implementácia dedičnosti v Pythone
Dedenie sa dá uplatniť v mnohých situáciách. Predpokladajme, že budujete softvérový systém pre univerzitu. Môže sa skladať z viacerých zainteresovaných strán, ako sú študenti, učitelia, zamestnanci atď. Každý človek má teda meno, vek, e-mail a ďalšie spoločné vlastnosti. Nie je potrebné deklarovať všetky vlastnosti v každej triede osobitne. Môžeme vytvoriť triedu osôb a všetky triedy zainteresovaných strán môžu zdediť všetky spoločné vlastnosti a funkcie z triedy osôb. V takom prípade nie je potrebné opakovane zapisovať spoločné vlastnosti do každej triedy. Podobne môžeme uvažovať o triede zvierat. Na tomto svete existujú stovky druhov zvierat. Všetky zvieratá jedia, spia a majú tiež niektoré druhy. Tento koncept je možné implementovať aj pomocou dedičstva.
Považujme zviera za super triedu a implementujme dedičstvo. V nižšie uvedenom príklade sme vytvorili jednu triedu zvierat. Trieda zvierat je rodičovská trieda. Ďalej sme vytvorili triedy Pes a Mačka, ktoré dedia vlastnosti a funkcie triedy zvierat. Kľúčové slovo pass sa používa v podradenej triede, keď v podradenej triede nemusíme implementovať žiadne rozšírené funkcie.
#vytvára rodičovskú triedutrieda Zviera:
# inicializačná funkcia
# initilizácia názvu zvieraťa a druhu druhu
def __init __ (self, name, specie_type):
ja.meno = meno
ja.specie_type = specie_type
# funkcia na vytlačenie mena zvieraťa
def printname (self):
print ("Názov zvieraťa je:", self.názov)
# funkcia na tlač druhu zvieracieho druhu
def printspecie (self):
print ("Typ druhu je:", samostatne.specie_type)
#vytvorenie triedy psov ako triedy detí a zvierat
trieda Pes (zviera):
# žiadne rozšírenie ani úpravy
prejsť
# Teraz trieda psov má prístup ku všetkým funkciám a vlastnostiam triedy zvierat
#vytvorenie objektu triedy pes
dogObj = Pes („Pes“, „mäsožravec“)
pesObj.printname ()
pesObj.printspecie ()
#vytvorenie triedy mačiek ako triedy detí a zvierat
trieda Mačka (zviera):
#inicializačná funkcia triedy mačiek
def __init __ (self):
#volanie a používanie funkcie inicializácie triedy zvierat
Zviera.__init __ (ja, „mačka“, „mäsožravý cicavec“)
# Teraz trieda mačiek má prístup ku všetkým funkciám a vlastnostiam triedy zvierat
#vytvorenie objektu triedy mačka
catObj = Cat ()
catObj.printname ()
catObj.printspecie ()
Výkon
The "Zviera.".__init __ (ja, „mačka“, „mäsožravý cicavec“) “ volanie je inicializačná funkcia triedy Zviera.
Funkcia super ()
Python poskytuje zabudovanú funkciu super () na dedenie všetkých vlastností a funkcií nadradenej triedy. Keď použijeme funkciu super (), potom už nie je potrebné spomínať názov nadradenej triedy, ako sme to robili v "Zviera.".__init __ (ja, „mačka“, „mäsožravý cicavec“) “ ale funkcia super () automaticky ukazuje na nadradenu triedu. Využime super funkciu.
#vytvára rodičovskú triedutrieda Zviera:
# inicializačná funkcia
#initilizácia názvu zvieraťa a druhu druhu
def __init __ (self, name, specie_type):
ja.meno = meno
ja.specie_type = specie_type
# funkcia na vytlačenie mena zvieraťa
def printname (self):
print ("Názov zvieraťa je:", self.názov)
# funkcia na tlač druhu zvieracieho druhu
def printspecie (self):
print ("Typ druhu je:", samostatne.specie_type)
#vytvorenie triedy psov ako triedy detí a zvierat
trieda Pes (zviera):
# using funkcia super ()
def __init __ (self, name, specie_type):
Super().__init __ (name, specie_type)
# Teraz trieda psov má prístup ku všetkým funkciám a vlastnostiam triedy zvierat
#vytvorenie objektu triedy pes
dogObj = Pes („Pes“, „mäsožravec“)
pesObj.printname ()
pesObj.printspecie ()
#vytvorenie triedy mačiek ako triedy detí a zvierat
trieda Mačka (zviera):
#inicializačná funkcia triedy mačiek
# using funkcia super ()
def __init __ (self, name, specie_type):
Super().__init __ (name, specie_type)
# Teraz trieda mačiek má prístup ku všetkým funkciám a vlastnostiam triedy zvierat
#vytvorenie objektu triedy mačka
catObj = mačka („mačka“, „mäsožravý cicavec“)
catObj.printname ()
catObj.printspecie ()
Výkon
Teraz pridajme niektoré ďalšie funkcie do podradených tried. Každá trieda dedí spoločné vlastnosti a funkcie od nadradenej triedy, ale podradená trieda môže mať nejakú extra triedu, ktorá je určená pre túto konkrétnu triedu. Teraz vytvorme niektoré ďalšie vlastnosti a funkcie v triede psov a mačiek.
#vytvára rodičovskú triedutrieda Zviera:
# inicializačná funkcia
#initilizácia názvu zvieraťa a druhu druhu
def __init __ (self, name, specie_type):
ja.meno = meno
ja.specie_type = specie_type
# funkcia na vytlačenie mena zvieraťa
def printname (self):
print ("Názov zvieraťa je:", self.názov)
# funkcia na tlač druhu zvieracieho druhu
def printspecie (self):
print ("Typ druhu je:", samostatne.specie_type)
#vytvorenie triedy psov ako triedy detí a zvierat
trieda Pes (zviera):
# using funkcia super ()
#pet name je novo pridaná funkčnosť
def __init __ (self, name, specie_type, pet_name):
Super().__init __ (name, specie_type)
ja.pet_name = pet_name
#vytvorenie novej funkcie
def printpetname (self):
print ("Meno zvieraťa je:", samo.meno domáceho zvieraťa)
# Teraz trieda psov má prístup ku všetkým funkciám a vlastnostiam triedy zvierat
#vytvorenie objektu triedy pes
dogObj = Pes ("Pes", "mäsožravec", "Max")
pesObj.printname ()
pesObj.printspecie ()
pesObj.printpetname ()
#vytvorenie triedy mačiek ako triedy detí a zvierat
trieda Mačka (zviera):
#inicializačná funkcia triedy mačiek
# using funkcia super ()
#adding food and pet_name properties
def __init __ (ja, meno, druh_typu, jedlo, pet_name):
Super().__init __ (name, specie_type)
ja.jedlo = jedlo
ja.pet_name = pet_name
# nová funkcia na prístup k informáciám o jedle
def printfood (vlastné):
print ("Mačka má rada:", ja.jedlo)
# nová funkcia pre meno domáceho maznáčika
def printpetname (self):
print ("Meno zvieraťa je:", samo.meno domáceho zvieraťa)
# Teraz trieda mačiek má prístup ku všetkým funkciám a vlastnostiam triedy zvierat
#vytvorenie objektu triedy mačka
catObj = Cat ("mačka", "mäsožravý cicavec", "sušienka", "sedmokráska")
catObj.printname ()
catObj.printspecie ()
Výkon
Prioritné funkcie
Prepísanie funkcie je dôležitým pojmom v dedičstve. Funkcii sa hovorí prepísaná funkcia, ak je jej názov rovnaký v triedach rodiča a potomka, ale implementácia alebo funkčnosť funkcie je v každej triede iná. Pozrime sa na príklad prepísanej funkcie v triede Zviera. V nižšie uvedenom príklade máme funkciu stravovania v triedach zvierat a tiež v ich podradených triedach (pes a mačka). Názov funkcie je v triedach rovnaký, ale implementácia je iná.
#vytvára rodičovskú triedutrieda Zviera:
def jesť (seba):
tlač („Všetky zvieratá jedia jedlo“)
#tvoriaci objekt
animalObj = Animal ()
#calling function
zvieraObj.jesť ()
#tvorba triedy psov
trieda Pes (zviera):
def jesť (seba):
tlač („Pes žerie mäso“)
#tvoriaci objekt
dogObj = Pes ()
#calling function
pesObj.jesť ()
trieda Mačka (zviera):
def jesť (seba):
tlač („Mačka jedáva sušienky a špeciálne jedlá“)
#tvoriaci objekt
catObj = Cat ()
#calling function
catObj.jesť ()
Výkon
Záver
Dedenie je jedným zo základných pojmov objektovo orientovaných programovacích jazykov. Použitím dedičnosti vytvoríme podradené triedy, ktoré dedia všetky funkcie a vlastnosti nadradenej triedy. Dedenie podporuje opätovné použitie kódu. Tento článok vysvetľuje dedičnosť v Pythone pomocou príkladov.