Python

Dedičnosť v Pythone

Dedičnosť v Pythone

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:

  1. Rodičovská trieda alebo základná trieda
  2. 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ú triedu
trieda 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ú triedu
trieda 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ú triedu
trieda 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ú triedu
trieda 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.

Hry Vulkan pre používateľov systému Linux
Vulkan pre používateľov systému Linux
S každou novou generáciou grafických kariet vidíme, že vývojári hier posúvajú hranice grafickej vernosti a prichádzajú o krok bližšie k fotorealizmu. ...
Hry OpenTTD vs Simutrans
OpenTTD vs Simutrans
Vytvorenie vlastnej simulácie dopravy môže byť zábavné, relaxačné a mimoriadne lákavé. Preto sa musíte uistiť, že vyskúšate čo najviac hier, aby ste n...
Hry Výukový program OpenTTD
Výukový program OpenTTD
OpenTTD je jednou z najpopulárnejších obchodných simulačných hier. V tejto hre musíte vytvoriť úžasné dopravné podnikanie. Začnete však na začiatku ok...