Introducere în moștenire în Python

Python, cu capacități multi-paradigme, se potrivește în mod evident stilului de programare orientat pe obiecte. Și orice limbaj nu poate fi suficient de ridicol pentru a pretinde metodologia orientată pe obiect fără a oferi sprijin pentru moștenire, inclusiv python. Python oferă o aromă deosebit de unică a moștenirii, permițând operațiuni extrem de puternice care nu au mai fost văzute până acum. Deși vine cu unele limitări, de exemplu, în prezent, securitatea prin sfera de aplicare a membrilor clasei se realizează numai prin convenție și nu face parte din limbă. Astfel, membrii declarați privați sunt de fapt accesibile public cu unele modificări.

Sintaxa clasei

Sintaxa pentru a defini o clasă derivată atunci când una sau mai multe clase de bază trebuie moștenite este următoarea:

class derivedClassName(baseClassName(, …)):


După cum este arătat, clasa derivată specifică o listă de clase de bază separată de virgulă de la care se vor moșteni în antetul definiției clasei.

Bucătărie de clasă

Să începem prin definirea unei clase de bază utilizate pentru toate exemplele noastre:

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

Baza prezentată definește un șablon de obiect utilizat pentru a defini bucătăriile și pentru a surprinde dacă este sau nu o bucătărie gătită. De asemenea, are un constructor folosit pentru a accepta tipul de bucătărie. Mai târziu, un obiect este creat de tipul „gătit”.

Tipuri de moștenire în Python

Există în principal două tipuri de moștenire, din care o combinație produce fiecare alt tip.

1. Moștenire unică: o clasă de bază, moștenită de o clasă derivată. Acesta este cel mai simplu tip de moștenire. De asemenea, cea minimă posibilă. Clasa derivată invocă automat constructorul clasei de bază.

2. Moștenire multiplă: clase de bază multiple moștenite de o clasă derivată. Constructorii clasei de bază sunt invocați în ordinea în care au fost derivate clasele.

Tipuri de moștenire derivate

Combinarea celor două forme de moștenire de mai sus poate duce la următoarele tipuri de moștenire:

1. Moștenire ierarhică: o clasă de bază moștenită de mai multe clase derivate. Fiecare clasă derivată va funcționa independent, dar obiectele împărtășesc variabilele clasei în diferite clase.

2. Moștenire pe mai multe niveluri: clasă derivată care servește ca clasă de bază pentru o altă clasă derivată. Constructorii clasei de bază sunt invocați recursiv în acest caz.

3. Moștenire hibridă: o combinație de mai multe instanțe ale tipurilor de moștenire menționate mai sus. Acest lucru ar putea duce la orice combinație imaginabilă de clase.

Exemple de moștenire în Python

Mai jos sunt exemple de moștenire în Python:

1. Moștenire unică

Să creăm o clasă numită Indian Cuisine care moștenește bucătăria de clasă.

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

După cum se arată într-o clasă nouă, indian_cusine a fost creat, care acceptă parametrul tip și invocă un constructor de clasă de bază, trecând parametrul. În plus, creează un nou loc variabil obiect . Aceasta este utilizată doar în clasa derivată și nu este vizibilă pentru obiectele clasei de bază.

2. Moștenire ierarhică

Să creăm o clasă numită ItalianCuisine care moștenește bucătăria de clasă:

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

Așa cum se arată într-o clasă nouă, italian_cusine a fost creată, care acceptă parametrul tip și invocă un constructor de clasă de bază, trecând parametrul. În plus, creează un nou loc variabil obiect . Aceasta este utilizată doar în clasa derivată și nu este vizibilă pentru obiectele clasei de bază. Acum, de la două clase, indian_cusines și italian_cuisine moștenesc clasa de bucătărie, există o moștenire ierarhică implementată.

3. Moștenire multiplă

Să creăm o clasă numită FineDineCuisine, care se moștenește de la mai multe clase.

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)

Noua clasă fine_dine_cuisine, moștenește de la indian_cuisine și italian_cuisine, moștenind parametrii lor. Acceptă tipul parametrilor, locul și porțiunea_dimensiune. tipul și locul sunt transmise ca argumente pentru constructorii clasei de bază. portion_size este un nou parametru obiect care nu este partajat la clasele de bază.

Notă privind moștenirea diamantului:

Deoarece atât indian_cuisine, cât și italian_cuisine moștenesc de la clasa bucătărie, aceasta constituie un caz clasic de moștenire a diamantului, în care mai multe instanțe ale unei clase de bază sunt prezente direct / indirect pentru o clasă derivată. În majoritatea limbilor, cum ar fi c ++, acest lucru cauzează o problemă sau se folosesc clase abstracte. Pe de altă parte, Python specifică soluția sa inovatoare. Moștenește metodele și atributele comune o singură dată acordând preferință claselor în ordinea moștenirii. Astfel, aici, din moment ce bucătăria este moștenită de două ori, se preferă versiunea indian_cuisine a bucătăriei, întrucât este moștenită mai întâi.

Notă pentru membrii clasei:

Orice atribut definit în cadrul definiției clasei, dar nu în cadrul unei funcții, devine un atribut de clasă și este distribuit în toate instanțele clasei. Astfel, dacă un obiect schimbă oricare dintre aceste atribute de clasă, modificările sunt vizibile pentru toate celelalte instanțe (fie pentru același obiect de clasă sau obiect de clasă derivat). Astfel, aveți grijă în timp ce utilizați atribute de clasă care nu sunt prezente în nicio definiție a metodei.

Concluzie - Moștenire în Python

Python a definit din nou o variantă foarte flexibilă, comodă și puternică de utilizat atunci când paradigma orientată pe obiect este ruta preferată. Este cu siguranță un concept pe care toată lumea îl poate folosi și ar trebui să aibă centura de dedesubt. Aceste concepte sunt utilizate pentru a forma blocurile de construcții ale oricărui software scalabil și de întreținut.
Cu această informație de bază pentru moștenire în python, puteți merge mai departe și să vizați declarațiile problemei din lumea reală și să vedeți cât de bine vă puteți gândi la un design la care vă puteți gândi.

Articole recomandate

Acesta este un ghid pentru Moștenirea din Python. Aici discutăm Introducerea, Sintaxa și tipurile de moștenire din Python împreună cu diferite exemple și implementarea codului său. De asemenea, puteți parcurge și alte articole sugerate -

    1. Moștenire în Java
    2. Ce este moștenirea în programare?
    3. Moștenire în C #
    4. Suprasolicitare în Java
    5. Moștenire în PHP
    6. Declarând clasa abstractă în C # cu exemplu