Uvod v dedovanje v Pythonu

Python, ki se ponaša z multi-paradigmskimi zmožnostmi, očitno ustreza objektno usmerjenemu slogu programiranja. In noben jezik ne more biti dovolj smešen, da bi zahteval objektno usmerjeno metodologijo, ne da bi podprl dedovanje, vključno s python-om. Python zagotavlja izrazito edinstven okus dedovanja, kar omogoča izjemno močne operacije, ki jih še nismo videli. Čeprav obstaja z nekaterimi omejitvami, na primer, trenutno je varnost skozi področje za člane razreda dosežena le s konvencijo in ni sama po sebi del jezika. Tako so člani, razglašeni za zasebne, dejansko dostopni javnosti z nekaj spremembami.

Sintaksa razreda

Sintaksa za določitev izpeljanega razreda, ko je treba podedovati enega ali več osnovnih razredov, je naslednja:

class derivedClassName(baseClassName(, …)):


Kot je razvidno, izpeljani razred podaja seznam za osnovne razrede, ločene z vejico, v naslovu definicije razreda.

Razredna kuhinja

Začnimo z opredelitvijo osnovnega razreda, ki se uporablja za vse naše primere:

class cuisine():
def __init__(self, type):
self.type = type
returncooked_cuisine = new cuisine('cooked')

Prikazana osnova določa predlogo predmeta, ki se uporablja za določanje kuhinj in zajemanje, ali gre za kuhano kuhinjo ali ne. Ima tudi konstruktor, ki se uporablja za sprejemanje vrste kuhinje. Kasneje se ustvari predmet tipa „kuhano“.

Vrste dedovanja v Pythonu

V glavnem obstajata dve vrsti dedovanja, katerih kombinacija prinaša vse druge vrste.

1. Enkratno dedovanje: en osnovni razred, ki ga podeduje en izvedeni razred. To je najpreprostejša vrsta dedovanja. Tudi minimalno možno. Izvedeni razred samodejno prikliče konstruktor osnovnega razreda.

2. Večkratno dedovanje: več osnovnih razredov, ki jih je podedoval en izvedeni razred. Konstruktorji osnovnega razreda se prikličejo po vrstnem redu, v katerem so bili izvedeni razredi.

Izvedene vrste dedovanja

Združevanje zgornjih dveh oblik dedovanja lahko privede do naslednjih vrst dedovanja:

1. Hierarhično dedovanje: en osnovni razred podeduje več izvedenih razredov. Vsak izvedeni razred bo deloval neodvisno, objekti pa si delijo spremenljivke razreda v različnih razredih.

2. Večstopenjsko dedovanje: izpeljani razred, ki služi kot osnovni razred za drug izpeljani razred. V tem primeru se konstruktorji osnovnega razreda sklicujejo rekurzivno.

3. Hibridno dedovanje: Kombinacija več primerov zgoraj omenjenih vrst dedovanja. To bi lahko privedlo do kakršne koli zamislive kombinacije razredov.

Primeri dedovanja v Pythonu

Spodaj so primeri dedovanja v Pythonu:

1. Enojno dedovanje

Ustvarimo razred, imenovan indijska kuhinja, ki podeduje razredno kuhinjo.

class indian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnindian_cuisine = new cuisine('cooked', 'India')

Kot je prikazano v novem razredu, je bil ustvarjen indian_cusine, ki sprejme parameter tipa in pokliče konstruktor osnovnega razreda in prenese parameter. Poleg tega ustvari novo spremenljivo mesto predmeta . To se uporablja samo v izpeljanem razredu in ni vidno za predmete osnovnega razreda.

2. Hierarhična dednost

Ustvarimo razred, imenovan ItalianCuisine, ki podeduje razredno kuhinjo:

class italian_cuisine(cuisine):
def __init__(self, type, place):
super().__init__(type)
self.place = place
returnitalian_cuisine = new cuisine('cooked', 'Italy')

Kot je prikazano v novem razredu, je bil ustvarjen italian_cusine, ki sprejme parameter tipa in pokliče konstruktor osnovnega razreda in prenese parameter. Poleg tega ustvari novo spremenljivo mesto predmeta . To se uporablja samo v izpeljanem razredu in ni vidno za predmete osnovnega razreda. Zdaj, ker dva razreda, indian_cusines in italian_cuisine, podedujeta kulinarični razred, je implementirana hierarhična dednost.

3. Večkratno dedovanje

Ustvarimo razred, imenovan FineDineCuisine, ki podeduje iz več razredov.

class fine_dine_cuisine(indian_cuisine, italian_cuisine):
def __init__(self, type, place, portion_size):
super().__init__(type, place)
self.portion_size = portion_size
returnfine_dine_cuisine = new cuisine('cooked', 'India', 4)

Novi razred fine_dine_cuisine, podeduje tako iz indijske_cuisine kot italijanske_cuisine, podeduje njihove parametre. Sprejema vrsto parametra, mesto in velikost parametrov. vrsta in kraj sta podana kot argument za konstruktorje osnovnega razreda. part_size je nov objektni parameter, ki ni v skupni rabi z osnovnimi razredi.

Opomba o dedovanju diamantov:

Ker od indijske kuhinje in italijanske kuhinje podedujeta od razreda kuhinje, je to klasičen primer dedovanja diamantov, kjer je več izvodov osnovnega razreda neposredno / posredno prisotnih za izpeljani razred. V večini jezikov, kot je c ++, to povzroča težave ali pa se uporabljajo abstraktni razredi. Python na drugi strani določa, da gre za lastno inovativno rešitev. Skupne metode in atribute podeduje le enkrat in daje prednost razredom po vrstnem redu dedovanja. Tako je tukaj, ker se kuhinja dvakrat podeduje, daje prednost različici kuhinje indian_cuisine, saj je podedovana prva.

Opomba za člane razreda:

Vsak atribut, opredeljen znotraj definicije razreda, vendar ne znotraj funkcije, postane atribut razreda in se deli v vseh primerkih razreda. Če torej en predmet spremeni katerega koli od teh atributov razreda, so spremembe vidne vsem drugim primerom (ne glede na to, ali gre za isti objekt razreda ali izpeljani predmet razreda). Zato bodite previdni pri uporabi atributov razreda, ki niso prisotni v nobeni definiciji metode.

Zaključek - Dedovanje Pythona

Python je znova definiral zelo prilagodljivo, prilagodljivo in zmogljivo za uporabo, kadar je prednostna ciljna usmerjenostna paradigma. To je vsekakor koncept, ki ga lahko uporabljajo vsi in bi ga morali imeti pod pasom. Ti koncepti se uporabljajo za oblikovanje gradnikov katerega koli razširljivega in vzdržljivega dela programske opreme.
S tem osnovnim uvodom v dedovanje v pythonu lahko nadaljujete in ciljate na izjave o težavah v resničnem svetu in vidite, kako dobro si lahko zamislite zasnovo.

Priporočeni članki

To je vodnik za dedovanje Pythona. Tukaj razpravljamo o uvodu, sintaksi in vrstah dedovanja v Pythonu skupaj z različnimi primeri in njegovo implementacijo kode. Ogledate si lahko tudi druge naše predlagane članke -

    1. Dedovanje v Javi
    2. Kaj je dedovanje v programiranju?
    3. Dedovanje v C #
    4. Prevladovanje v Javi
    5. Dedovanje v PHP
    6. Izjava abstraktnega razreda v C # s primerom