Bevezetés az öröklésbe a Pythonban

A multi-paradigma képességeivel büszkélkedő Python nyilvánvalóan alkalmazza az objektum-orientált programozási stílust. És egyetlen nyelv sem lehet elég nevetséges, hogy objektum-orientált módszertant igényelhessen anélkül, hogy támogatná az öröklést, beleértve a python-ot is. A Python kifejezetten egyedülálló örökség-aromát biztosít, lehetővé téve a még soha nem látott rendkívül erőteljes műveleteket. Bár ez bizonyos korlátozásokkal jár, például jelenleg az osztály tagjai által biztosított biztonságot csak egyeztetés útján érik el, és nem tartoznak a nyelv belső részébe. Így a magánnak nyilvánított tagok valójában bizonyos módosításokkal nyilvánosan hozzáférhetők.

Osztály szintaxis

A származtatott osztály meghatározására szolgáló szintaxis, amikor egy vagy több alapelv öröklésre kerül, a következő:

class derivedClassName(baseClassName(, …)):


Ahogy az ábrán látható, a származtatott osztály vesszővel elválasztott azon alaposztályokat határoz meg, amelyekből az osztálydefiníciós fejlécben öröklni kell.

Osztálykonyha

Kezdjük azzal, hogy meghatározunk egy alaposztályt, amelyet az összes példánkhoz használunk:

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

A bemutatott alap egy objektumsablont határoz meg, amely a konyhák meghatározására szolgál, és rögzíti, hogy főtt konyha vagy sem. Van egy kivitelező is, amely elfogadja a konyhát. Később létrejön egy „főtt” típusú objektum.

Az öröklés típusai a Pythonban

Elsősorban kétféle öröklés létezik, amelyek kombinációja minden más típust eredményez.

1. Egyetlen öröklés: Egy alaposztály, amelyet egy származtatott osztály örökölt. Ez az öröklés legegyszerűbb típusa. Szintén a lehető legalacsonyabbat. A származtatott osztály automatikusan meghívja az alaposztály-konstruktort.

2. Többszörös öröklés: Több alaposztály öröklődik egy származtatott osztály alapján. Az alap osztály építőit az osztályok származási sorrendjében hívjuk meg.

Az öröklés származtatott típusai

Az öröklés fenti két formájának kombinálása az alábbi öröklési típusokat eredményezheti:

1. Hierarchikus öröklés: Egy alaposztály, amelyet több származtatott osztály örökölt. Minden származtatott osztály önállóan fog működni, de az objektumok megosztják az osztályváltozókat a különböző osztályok között.

2. Többszintű öröklés: egy származtatott osztály, amely egy másik származtatott osztály alaposztályaként szolgál. Ebben az esetben a bázis osztály építőit rekurzív módon hívják meg.

3. Hibrid öröklés: A fent említett öröklési típusok több példányának kombinációja. Ez az osztályok elképzelhető kombinációjához vezethet.

Példák az öröklésre Pythonban

Az alábbiakban a Python-örökség példáit mutatjuk be:

1. Egyetlen öröklés

Hozzunk létre egy indiai konyha nevű osztályt, amely örökli az osztálykonyhát.

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

Mint egy új osztályban látható, indian_cusine jött létre, amely elfogadja a típusparamétert, és egy alaposztály-konstruktorra hívja fel a paramétert. Ezenkívül létrehoz egy új objektumváltozót is . Ezt csak a származtatott osztályban használják, és az alaposztály objektumok számára nem látható.

2. Hierarchikus öröklés

Hozzunk létre egy ItalianCuisine nevű osztályt, amely örökli az osztálykonyhát:

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

Mint egy új osztály mutatja, az italian_cusine jött létre, amely elfogadja a típusparamétert, és egy alaposztály-konstruktorra hívja fel a paramétert. Ezenkívül létrehoz egy új objektumváltozót is . Ezt csak a származtatott osztályban használják, és az alaposztály objektumok számára nem látható. Mivel két osztály, az indiai_gyakorlat és az olasz_kóstoló a konyhaosztályt örökölte, végrehajtásra került egy hierarchikus öröklés.

3. Több öröklés

Hozzunk létre egy FineDineCuisine nevû osztályt, amely több osztályból örököl.

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)

Az új osztály, a finom_díjak, az indiai és az olasz konyha egyaránt örököl, paramétereikkel örökölve. Elfogadja a paraméter típusát, helyét és részarányát. A típust és a helyet argumentumként adják át az alap osztály építőinek. A rész_mérete egy új objektumparaméter, amelyet nem osztanak meg az alaposztályok között.

Megjegyzés a gyémánt öröklésről:

Mivel mind az indiai, mind az olasz konyha a konyhai osztálytól örököl, ez a klasszikus gyémánt öröklési eset, amikor egy alap osztály több példánya közvetlenül / közvetetten jelen van egy származtatott osztály számára. A legtöbb nyelvben, mint például a c ++, ez problémát okoz, vagy elvont osztályokat használnak. A Python viszont meghatározza saját innovatív megoldását. A közös módszereket és attribútumokat csak akkor örököl, ha az osztályokat az öröklés sorrendjében előnyben részesítik. Így itt, mivel a konyhát kétszer örököljük, a konyha indian_cuisine változatát részesítjük előnyben, mivel azt először örököltük.

Megjegyzés az osztály tagjai számára:

Az osztálydefiníción belül definiált bármely attribútum, de nem egy funkción belül, osztályatribútummá válik, és megosztott az osztály összes példányán. Tehát, ha egy objektum megváltoztatja ezen osztály attribútumok bármelyikét, akkor a változások az összes többi példányban láthatók (akár ugyanazon osztályobjektum, akár származtatott osztályobjektum esetén). Ezért vigyázzon az olyan osztályattribútumok használatakor, amelyek egyetlen metódusdefinícióban sem szerepelnek.

Következtetés - örökség a Pythonban

A Python ismét egy nagyon rugalmas, alkalmazkodó és nagy teljesítményű felhasználást határozott meg, amikor az objektum-orientált paradigma az előnyben részesített útvonal. Ez határozottan egy olyan koncepció, amelyet mindenki használhat, és az alatt kell lennie. Ezeket a fogalmakat bármilyen méretezhető és karbantartható szoftver alkotóelemeinek kialakításához használják.
Ezzel az alapvető bevezetővel a python öröklésénél továbbléphet és megcélozhatja a valós problémákra vonatkozó állításokat, és megnézheti, hogy a formatervezés milyen jól gondolkodik.

Ajánlott cikkek

Ez a Python örökségének útmutatója. Itt tárgyaljuk a Python bevezetését, szintaxisát és az öröklés típusait, különféle példákat és annak végrehajtását. Megnézheti más javasolt cikkeinket -

    1. Öröklődés a Java-ban
    2. Mi az örökség a programozásban?
    3. Öröklés a C # -ben
    4. A Java alapon érvényes
    5. Öröklés a PHP-ben
    6. Absztrakt osztály deklarálása a C # példában

Kategória: