Sissejuhatus pärimisse Pythonis

Mitme paradigma võimalustega uhkeldav Python sobib ilmselgelt objektorienteeritud programmeerimisstiiliga. Ja ükski keel ei saa olla piisavalt naeruväärne, et nõuda objektorienteeritud metoodikat ilma pärimise, sealhulgas pütooni toeta. Python pakub selgelt ainulaadset päranduse maitset, võimaldades eriti võimsaid toiminguid, mida pole varem nähtud. Ehkki sellega kaasnevad mõned piirangud, saavutatakse näiteks klassiliikmetele mõeldud turvalisus praegu lihtsalt kokkuleppe teel ja see pole olemuslikult selle keele osa. Seega on eraviisiliselt kuulutatud liikmetele tegelikult avaldatud juurdepääs mõne muudatusega.

Klassi süntaks

Süntaks tuletatud klassi määratlemiseks, kui üks või mitu põhiklassi päritakse, on järgmine:

class derivedClassName(baseClassName(, …)):


Nagu näidatud, täpsustab tuletatud klass klassi määratluse päises komaeraldusega põhiklasside loendi, millelt pärida.

Klassi köök

Alustame põhiklassi määratlemisega, mida kasutatakse kõigi meie näidete jaoks:

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

Kuvatud alus määratleb objektimalli, mida kasutatakse köökide määratlemiseks ja jäädvustamiseks, kas tegemist on küpsetatud köögiga või mitte. Samuti on sellel konstruktor, mida kasutatakse köögi tüüpide vastuvõtmiseks. Hiljem luuakse objekt tüüpi "keedetud".

Päroni tüübid Pythonis

Pärandusi on peamiselt kahte tüüpi, nende kombinatsioon annab iga teise tüübi.

1. Üks pärand: üks põhiklass, päritud ühe tuletatud klassi järgi. See on kõige lihtsam päranditüüp. Samuti võimalikult väike. Tuletatud klass kutsub automaatselt põhiklassi konstruktori.

2. Mitu pärimist: mitu tuletatud klassi päritud baasklassi. Põhiklassi konstruktoritele viidatakse klasside tuletamise järjekorras.

Päritud tüübid

Ülaltoodud kahe pärandivormi ühendamine võib viia järgmiste pärandiliikideni:

1. Hierarhiline pärand: ühe põhiklassi pärandab mitu tuletatud klassi. Iga tuletatud klass töötab iseseisvalt, kuid objektid jagavad klassimuutujaid erinevate klasside vahel.

2. Mitmetasandiline pärand: tuletatud klass, mis toimib teise tuletatud klassi põhiklassina. Põhiklassi konstruktoritele viidatakse sel juhul rekursiivselt.

3. Hübriidne pärimine: ülalnimetatud päranditüüpide mitme esinemisjuhu kombinatsioon. See võib viia klasside mõttelise kombinatsioonini.

Näited pärimisest Pythonis

Allpool on toodud näited pärandist Pythonis:

1. Üksik pärand

Loome klassi India köök, mis pärib klassiköögi.

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

Nagu uues klassis näidati, loodi indian_cusine, mis aktsepteerib tüüpparameetrit ja kutsub parameetri ületades alusklassi konstruktorile. Lisaks loob see uue objekti muutuva koha . Seda kasutatakse ainult tuletatud klassis ja see pole põhiklassi objektide jaoks nähtav.

2. Hierarhiline pärimine

Loome klassi ItalianCuisine, mis pärib klassikööki:

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

Nagu uues klassis näidati, loodi italian_cusine, mis aktsepteerib tüüpparameetrit ja kutsub parameetri ületades alusklassi konstruktorile. Lisaks loob see uue objekti muutuva koha . Seda kasutatakse ainult tuletatud klassis ja see pole põhiklassi objektide jaoks nähtav. Nüüd, kui kaks klassi, indian_cusines ja italian_cuisine, pärivad köögiklassi, on rakendatud hierarhiline pärand.

3. Mitu pärandit

Loome klassi FineDineCuisine, mis pärib mitmest klassist.

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)

Uus klass fine_dine_cuisine pärib nii indian_cuisine kui italian_cuisine, pärides nende parameetrid. See aktsepteerib parameetrite tüüpi, kohta ja osa suurust. tüüp ja koht antakse argumentidena põhiklassi konstruktoritele. osa_suurus on uus objekti parameeter, mida ei jagata alusklassidega.

Märkus teemandi pärimise kohta:

Kuna nii india_köök kui ka itaalia_köök pärivad köögiklassist, moodustab see klassikalise teemantide pärimise juhtumi, kus tuletatud klassi jaoks on otseselt / kaudselt olemas mitu põhiklassi esinemisjuhtu. Enamikes keeltes, näiteks c ++, põhjustab see probleemi või kasutatakse abstraktseid klasse. Python seevastu täpsustab enda innovaatilist lahendust. See pärib levinud meetodid ja atribuudid ainult üks kord, eelistades klasse pärimisjärjekorras. Seega, kuna kööki päritakse kaks korda, eelistatakse köögi varianti indian_cuisine, kuna see päritakse kõigepealt.

Märkus klassiliikmete kohta:

Klassimääratluses määratletud mis tahes atribuut, kuid mitte funktsioon, saab klassi atribuudiks ja jagatakse klassi kõigi eksemplaride vahel. Seega, kui üks objekt muudab mõnda neist klassi atribuutidest, on muudatused nähtavad kõigile teistele eksemplaridele (kas sama klassiobjekti või tuletatud klassiobjekti puhul). Seetõttu olge ettevaatlik, kui kasutate klassi atribuute, mida pole üheski meetodi määratluses.

Järeldus - pärimine Pythonis

Python on taas määratlenud väga paindliku, kohandava ja võimsa kasutamiseks, kui eelistatud teekonnaks on objektorienteeritud paradigma. See on kindlasti kontseptsioon, mida kõik saavad kasutada ja millel peaks olema vöö. Neid mõisteid kasutatakse mis tahes skaleeritava ja hooldatava tarkvara tükkide moodustamiseks.
Selle põhilise sissejuhatuse abil pärimisse pythonis saate edasi minna ja sihtida reaalse maailma probleemilauseid ja näha, kui hea kujunduse te suudate välja mõelda.

Soovitatavad artiklid

See on juhend Pythoni pärandist. Siin käsitleme Pythoni sissejuhatust, süntaksit ja pärandi tüüpe koos erinevate näidete ja selle koodi rakendamisega. Võite vaadata ka meie teisi soovitatud artikleid -

    1. Pärimine Java-s
    2. Mis on pärand programmeerimises?
    3. Pärand C # -s
    4. Ülekaalus Java
    5. Pärand PHP-s
    6. C-klassi abstraktse klassi kuulutamine näitega

Kategooria: