Johdatus perintöön Pythonissa

Python, ylpeilevä moniparadigmatoiminnoilla, mukauttaa selvästi oliokeskeisen ohjelmointityylin. Ja mikään kieli ei voi olla tarpeeksi naurettava väittämään oliopohjaista menetelmää antamatta tukea perinnölle, python mukaan lukien. Python tarjoaa selvästi ainutlaatuisen perinnön maun, mahdollistaen erittäin tehokkaat toiminnot, joita ei ole ennen nähty. Vaikka siihen liittyy joitain rajoituksia, esimerkiksi tällä hetkellä luokan jäsenille tarkoitettu turvallisuus saavutetaan vain sopimuksella, eikä se ole luonnostaan ​​osa kieltä. Siksi yksityisiksi julistetuille jäsenille on tosiasiallisesti pääsy julkisesti tietyin muutoksin.

Luokan syntaksi

Syntaksi johdetun luokan määrittelemiseksi, kun yksi tai useampi perusluokka on perittävä, on seuraava:

class derivedClassName(baseClassName(, …)):


Kuten on esitetty, johdettu luokka määrittää pilkuilla erotetun luettelon perustason luokista, jotka peritään luokanmääritysotsikossa.

Luokan keittiö

Aloitetaan määrittelemällä perusluokka, jota käytetään kaikissa esimerkkeissä:

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

Esitetty pohja määrittelee objektimallin, jota käytetään määrittelemään ruokia ja sieppaamaan, onko se keitetyt ruokia vai ei. Siinä on myös rakentaja, jota käytetään tyyppisten ruokien hyväksymiseen. Myöhemmin luodaan objekti tyypiksi 'kypsennetty'.

Perintötyypit Pythonissa

Perintötyyppejä on pääasiassa kahta tyyppiä, joiden yhdistelmä tuottaa kaikki muut tyypit.

1. Yksi perintö: Yksi perusluokka, periytyy yksi johdettu luokka. Tämä on yksinkertaisin perintö. Myös mahdollisimman pieni. Johdettu luokka kutsuu automaattisesti perusluokan rakentajaan.

2. Moniperintö: Useat perustunnit perivät yksi johdettu luokka. Perusluokan rakentajia kutsutaan luokkien johtamisjärjestyksessä.

Johdetut tyypit perinnöllisyydestä

Edellä mainittujen kahden perintömuodon yhdistäminen voi johtaa seuraaviin perintötyyppeihin:

1. Hierarkkinen perintö: Yksi perusluokka perii useita johdettuja luokkia. Jokainen johdettu luokka toimii itsenäisesti, mutta esineet jakavat luokamuuttujat eri luokkiin.

2. Monitasoinen perintö: Johdettu luokka, joka toimii perustyyppinä toiselle johdetulle luokalle. Perusluokan rakentajia kutsutaan tässä tapauksessa rekursiivisesti.

3. Hybridiperintö: Yhdistelmä useista yllämainituista perintötyypeistä. Tämä voisi johtaa kuviteltavissa olevaan luokkayhdistelmään.

Esimerkkejä Pythonin perinnöstä

Alla on esimerkkejä Pythonin perinnöstä:

1. Yksi perintö

Luomme luokka nimeltä Intian keittiö, joka perii luokan keittiön.

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

Kuten uudessa luokassa esitetään, luotiin indian_cusine, joka hyväksyy tyyppiparametrin ja vetoaa perusluokan rakentajaan parametrin ohittamiseksi. Se luo lisäksi uuden objektimuuttujan paikan . Tätä käytetään vain johdetussa luokassa, eikä se ole näkyvissä perusluokan kohteille.

2. Hierarkkinen perintö

Luomme luokka nimeltä ItalianCuisine, joka perii luokan ruokia:

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

Kuten uudessa luokassa esitetään, italian_cusine luotiin, joka hyväksyy tyyppiparametrin ja vetää perusluokan rakentajaan parametrin ohittamisen. Se luo lisäksi uuden objektimuuttujan paikan . Tätä käytetään vain johdetussa luokassa, eikä se ole näkyvissä perusluokan kohteille. Nyt, koska kaksi luokkaa, intialaiset_koneet ja italian_cuisine perivät ruokatunnin, on toteutettu hierarkkinen perintö.

3. Monta perintöä

Luomme luokka nimeltä FineDineCuisine, joka perii useista luokista.

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)

Uusi luokka fine_dine_cuisine, perii sekä indian_cuisine- että italian_cuisine -tuotteista, perimällä niiden parametrit. Se hyväksyy parametrityypin, paikan ja osan koon. tyyppi ja paikka välitetään perusteina perusluokan rakentajille. osa_koko on uusi olioparametri, jota ei jaeta pohjaluokkiin.

Huomautus timanttien perinnöstä:

Nyt, koska sekä indian_cuisine että italian_cuisine perivät ruokatunnista, se muodostaa klassisen tapauksen timanttiperinnöstä, jossa johdetun luokan läsnä on suoraan / epäsuorasti useita perusluokan tapauksia. Useimmissa kielissä, kuten c ++, tämä aiheuttaa ongelman tai käytetään abstrakteja luokkia. Python puolestaan ​​määrittelee oman innovatiivisen ratkaisunsa. Se perii yleiset menetelmät ja ominaisuudet vain kerran antamalla etusija luokille perintöjärjestyksessä. Siksi, koska keittiö periytyy kahdesti, etusija annetaan ruuan indian_cuisine -versiolle, koska se peritään ensin.

Huomautus luokan jäsenille:

Mistä tahansa luokan määritelmässä määritellystä attribuutista, mutta ei funktiossa, tulee luokan attribuutti, ja se jaetaan luokan kaikille ilmentymille. Joten jos yksi objekti muuttaa jotakin näistä luokan määritteistä, muutokset ovat näkyvissä kaikille muille ilmentymille (olipa kyse samalle luokkaobjektille tai johdetulle luokkaobjektille). Ole siis varovainen käyttäessäsi luokan määritteitä, joita ei ole millään menetelmän määritelmällä.

Johtopäätös - Perintö Pythonissa

Python on jälleen määritellyt erittäin joustavan, mukautuvan ja tehokkaan käytettäväksi, kun oliopainotteinen paradigma on suositeltava reitti. Se on ehdottomasti käsite, jota kaikki voivat käyttää, ja sen pitäisi olla vyön alla. Näitä konsepteja käytetään muodostamaan rakennuspalikat kaikista skaalautuvista ja ylläpidettävistä ohjelmistoista.
Tämän python-perinnöllisyyden perusohjeen avulla voit mennä eteenpäin ja kohdistaa reaalimaailman ongelmalausunnot ja nähdä kuinka hyvin suunnittelusta osaat ajatella.

Suositellut artikkelit

Tämä on opas perintöön Pythonissa. Tässä keskustellaan Pythonin johdannosta, syntaksista ja perinnöstyypeistä sekä erilaisista esimerkeistä ja sen koodin toteutuksesta. Voit myös käydä läpi muiden ehdottamiemme artikkeleidemme -

    1. Perintö Java
    2. Mikä on perintö ohjelmoinnissa?
    3. Perintö C #: ssä
    4. Ylivoimainen Java
    5. Perintö PHP: llä
    6. Abstraktin luokan julistaminen esimerkissä C #