Tipuri de moștenire în Python | Moștenirea Python [cu exemplu]

Publicat: 2021-02-09

Cuprins

Introducere

Lupta pentru un cod curat este o bătălie la care se alătură toți programatorii. Și acea bătălie poate fi cucerită cu o armură adecvată de concepte de programare orientată pe obiecte. Și utilizarea corectă a conceptelor OOP ne ajută să îmbunătățim reutilizarea codului, lizibilitatea, complexitatea optimă a timpului și spațiului.

Codarea în Python este super distractivă. Are un număr uriaș de suporturi pentru biblioteci, orientate pe obiecte, programabilitatea GUI îl face un tort fierbinte printre toate limbajele de programare.

Moștenirea este una dintre cele mai utilizate caracteristici orientate pe obiecte, iar implementarea acesteia în python este o sarcină entuziastă. Deci, să începem acum!

În primul rând, să înțelegem definiția moștenirii.

Moştenire

Moștenirea este un proces de obținere a proprietăților și caracteristicilor (variabile și metode) ale unei alte clase. În această ordine ierarhică, clasa care moștenește o altă clasă se numește subclasă sau clasă copil, iar cealaltă clasă este clasa părinte.

Moștenirea este clasificată în funcție de ierarhia urmată și de numărul de clase și subclase părinte implicate.

Există cinci tipuri de moșteniri:

  1. Moștenire unică
  2. Moștenirea multiplă
  3. Moștenirea pe mai multe niveluri
  4. Moștenirea ierarhică
  5. Moștenirea hibridă

Moștenire unică

Acest tip de moștenire permite unei subclase sau unei clase derivate să moștenească proprietățile și caracteristicile clasei părinte, ceea ce evită duplicarea codului și îmbunătățește reutilizarea codului.

#clasa părinților
clasa de mai sus :
i = 5
def fun1 (auto):
print( „Bună, ești în clasa de părinte” )

#subclasă
clasa de mai jos (sus):
i= 10
def fun2 (auto):
print( „Bună, ești în subclasa” )

temp1=Mai jos()
temp2=Deasupra()
temp1.fun1()
temp1.fun2()
temp2.fun1()
print(temp1.i)
print(temp2.i)
#temp2.fun2()

Bine, haideți să parcurgem codul de mai sus.

În codul de mai sus, „Asupra” este clasa părinte, iar „Mai jos” este clasa copil care moștenește clasa părinte. Implementarea moștenirii în python este o sarcină simplă, trebuie doar să menționăm numele clasei părinte în parantezele clasei copil. Creăm obiecte atât din clasa părinte, cât și din clasa copil, și aici vine un punct interesant despre moștenire. O clasă copil poate accesa metodele și variabilele clasei părinte, în timp ce invers nu este adevărat.

Deci, în codul de mai sus, obiectul temp1 poate accesa atât metodele fun1, cât și fun2, în timp ce obiectul temp2 poate accesa doar metoda fun1. În mod similar, aceeași regulă se aplică variabilelor din cod. Și accesarea unei metode sau a unei variabile de clasă copil dintr-un obiect de clasă părinte va arunca o eroare. Dacă ultima linie din cod este necomentată, atunci apare o eroare.

Moștenirea multiplă

Această moștenire permite unei clase copil să moștenească de la mai multe clase părinte. Acest tip de moștenire nu este acceptat de clasele java, dar python acceptă acest tip de moștenire. Are un avantaj enorm dacă avem o cerință de a aduna mai multe caracteristici din clase diferite.

#clasa de părinți 1
clasa A :
demo1= 0
def fun1 (auto):
print(self.demo1)

#clasa de părinți 2
clasa B :
demo2= 0
def fun2 (auto):
print(self.demo2)

#clasa pentru copii
clasa C (A, B):
def fun3 (auto):
print( „Hei, ești în clasa pentru copii” )

# Cod principal
c = C()
c.demo1 = 10
c.demo2 = 5
c.fun3()
print( „primul număr este: „ ,c.demo1)
print( „al doilea număr este: „ ,c.demo2)

În codul de mai sus, am creat două clase părinte „A”, „B”. Urmând sintaxa moștenirii în python, am creat o clasă copil, care moștenește ambele clase „A” și „B”. După cum sa discutat mai devreme, că o clasă copil poate accesa metodele și variabilele clasei părinte, clasa copil „C” poate accesa metodele clasei părinte.

Moștenirea pe mai multe niveluri

În moștenirea pe mai multe niveluri, transferul proprietăților caracteristicilor se face la mai mult de o clasă ierarhic. Pentru a obține o vizualizare mai bună, îl putem considera ca o relație strămoș cu nepoți sau o rădăcină cu frunză într-un copac cu mai mult de un nivel.

#clasa de părinți 1
vehicul de clasa :
def functioning (auto):
print( „vehiculele sunt folosite pentru transport” )

#copil clasa 1
mașină de clasă (vehicul):
def wheels (auto):
print( „o mașină are 4 roți” )

#copil clasa 2
clasa electric_car (mașină):
specialitate def (auto):
print( „mașina electrică funcționează cu electricitate” )

electric=masina_electrica()
electric.specialitate()
roți electrice()
electric.functional()

Având o rulare uscată peste codul de mai sus, am creat un „vehicul de clasă”, apoi am creat o mașină de clasă care moștenește vehiculul de clasă. Acum „vehiculul” este o clasă de părinte, iar „mașina” este o clasă de copii. Mai târziu am creat o clasă „electric_car”, acum clasa mașină este o clasă părinte și clasa electric_car este o clasă copil, iar relația dintre clasa vehicul și clasa electric_car este moștenirea pe mai multe niveluri.

Aici electric_car class poate accesa metodele, variabilele atât ale clasei vehiculului, cât și ale clasei de mașini, în timp ce clasa mașinii poate accesa doar metodele, variabilele clasei vehiculului. Și după cum am discutat, vehiculul din clasa părinte nu poate accesa nicio metodă din clasa copil.

Moștenirea ierarhică

Această moștenire permite unei clase să găzduiască ca clasă părinte pentru mai mult de o clasă sau subclasă copil. Acest lucru oferă un avantaj de partajare a funcționării metodelor cu mai multe clase copil, evitând astfel duplicarea codului.

#clasa părinților
Parinte clasa :
def fun1 (auto):
print( „Bună, ești în clasa de părinte” )

#copil clasa 1
clasa child1 (Părinte):
def fun2 (auto):
print( „Hei, sunteți în clasa de copii 1” )

#copil clasa 2
clasa copil2 (părinte):
def fun3 (auto):
print( „Hei, ești în clasa de copii 2” )

#copil clasa 3
clasa copil 3 (părinte):
def fun4 (auto):
print( „Hei, ești în clasa de copii 3” )

# programul principal
child_obj1 = child3()
child_obj2 = child2()
child_obj3 = child1()
child_obj1.fun1()
child_obj1.fun4()
child_obj2.fun1()
child_obj2.fun3()
child_obj3.fun1()
child_obj3.fun2()

În codul de mai sus, avem o singură clasă părinte și mai multe clase copil care moștenesc aceeași clasă părinte. Acum toate clasele copil pot accesa metodele și variabilele clasei părinte. Am creat o clasă „Părinte” și 3 clase copil „copil1”, „copil2”, „copil3”, care moștenește aceeași clasă părinte „Părinte”.

Checkout: Python Open Source Project Ideas

Moștenirea hibridă

O moștenire este numită moștenire hibridă dacă în același cod este implementat mai mult de un tip de moștenire. Această caracteristică permite utilizatorului să utilizeze caracteristica de moștenire la maximum. Acest lucru satisface cerința implementării unui cod care necesită moșteniri multiple în implementare.

clasa a:
def fun1(self):
print(„Hei, sunteți în clasa A”) clasa B(A):
def fun2(self):
print(„Hei, sunteți în clasa B”) clasa C(A):
def fun3(self):
print(„Hei, sunteți în clasa C”) clasa D(C,A): #linia 13
def fun4(self):
print(„Hei, ești în clasa D”)#program principal
ref = D()
ref.fun4()
ref.fun3()
ref.fun1()

În codul de mai sus, putem vedea că am implementat mai mult de un tip de moștenire. Clasele A, B, C implementează moștenirea ierarhică, iar clasele A, C, D implementează moștenirea pe mai multe niveluri. Nu, acele moșteniri individuale au proprietățile lor individuale de acces la metodele și variabilele clasei părinte. De asemenea, este un punct de remarcat.

Când implementăm moștenirea pe mai multe niveluri, urmăm sintaxa precum „child_class(parent_class1, parent_class2)”. Dar această sintaxă va genera o eroare dacă „parent_class1” este ierarhic deasupra „parent_class2”. Dacă dorim să implementăm această sintaxă, atunci „clasa_parent1” trebuie să fie la un nivel ierarhic mai mic decât „clasa_parent2”. De exemplu, în codul de mai sus, dacă linia 13 are o clasă de sintaxă D(A, C), atunci codul nu ar funcționa, deoarece clasa C este ierarhic mai mică decât clasa A.

Învață cursuri de știință a datelor de la cele mai bune universități din lume. Câștigă programe Executive PG, programe avansate de certificat sau programe de master pentru a-ți accelera cariera.

Citiți: Idei și subiecte pentru proiecte Python

Concluzie

Am trecut prin utilizările și nevoile moștenirii și am înțeles definiția moștenirii. De asemenea, am trecut prin tipurile de moștenire și am parcurs codurile de implementare și explicațiile fiecărui tip de moștenire. A înțeles regulile de accesare a variabilelor și metodelor în diferite tipuri de moșteniri.

Acum că știți despre diferitele tipuri de moșteniri în python, încercați să le implementați și să le utilizați în codul dvs. Încercați să vă optimizați codul cu utilizarea corectă a moștenirii.

Dacă sunteți curios să aflați despre știința datelor, consultați Diploma PG în știința datelor de la IIIT-B și upGrad, care este creată pentru profesioniști care lucrează și oferă peste 10 studii de caz și proiecte, ateliere practice practice, mentorat cu experți din industrie, 1- on-1 cu mentori din industrie, peste 400 de ore de învățare și asistență profesională cu firme de top.

Care este diferența dintre moștenirea multiplă și moștenirea pe mai multe niveluri?

Mulți programatori începători se confundă adesea între moștenirea multiplă și moștenirea pe mai multe niveluri. Următoarele ilustrează unele dintre diferențele semnificative dintre aceste două tipuri de moștenire.
Moștenire multiplă -
1. Când o clasă copil își moștenește proprietățile și caracteristicile de la mai mult de o clasă de bază, un astfel de tip de moștenire este cunoscut sub numele de Moștenire Multiplă.
2. Nu este folosit pe scară largă, deoarece Moștenirea Multiplă poate fi destul de complex de înțeles.
3. Are doar două niveluri de clasă: clasă de bază și clasă derivată.
Moștenirea pe mai multe niveluri
1. Moștenirea în care o clasă copil moștenește proprietățile din clasa sa de bază, care moștenește în continuare proprietățile de la o altă clasă de bază, făcând din prima clasă copil este cunoscută ca Moștenire pe mai multe niveluri.
2. Această moștenire servește unor scopuri mari și, prin urmare, este folosită pe scară largă.
3. Are cel puțin trei niveluri de clasă: clasă de bază, clasă intermediară și clasă derivată.

Ce înțelegeți despre moștenirea hibridă?

Moștenirea hibridă este un tip unic de moștenire. În loc să aibă un concept nou, așa cum sugerează și numele, este o combinație de două sau mai multe tipuri de moșteniri. De exemplu, o clasă care arată atât moșteniri multiple, cât și pe mai multe niveluri este un exemplu de moștenire hibridă.

Ce știi despre modificatorii de acces în Python?

În Python, există 3 tipuri de modificatori de acces care sunt menționate mai jos:
1. Modificator de acces public - Membrii publici ai unei clase sunt accesibili prin orice parte a programului. În Python, dacă specificatorul de acces al membrilor de date sau al funcțiilor membre nu este specificat, atunci este public implicit.
2. Modificator de acces protejat - Dacă un membru de date sau o funcție de membru este definit ca protejat, atunci acesta este accesibil numai de clasele derivate ale acelei clase.
3. Modificator de acces privat - Modificatorul de acces privat este cel mai sigur specificator de acces. Membrii privați sunt accesibili numai în cadrul clasei în care sunt definiți.