Ce este polimorfismul în Python? Polimorfismul explicat cu exemple
Publicat: 2021-03-05Cuprins
Introducere
Python este un limbaj de programare de nivel înalt, interpretat și cu sursă deschisă. A câștigat multă atenție în rândul multor programatori și dezvoltatori, deoarece a susținut biblioteci care ajută în multe sarcini, cum ar fi analiza exploratorie a datelor, programarea GUI etc. De asemenea, programarea în python este foarte interesantă.
Vom discuta despre o caracteristică interesantă a lui python în acest articol. Asadar, haideti sa începem!
Ce este polimorfismul?
Cuvântul polimorfism este derivat din cuvântul grecesc poli (însemnând multe) și morfism (forme). Înseamnă că un singur nume de funcție sau un nume de metodă poate avea mai multe forme. Și acest lucru îndeplinește dorința de a evita duplicarea codului în implementare.
Dar polimorfismul din python este puțin diferit de polimorfismul din alte limbaje de programare. Limbajele de programare precum java și c++ acceptă polimorfismul în timp de compilare (supraîncărcarea metodei). În supraîncărcarea metodelor, mai multe metode pot avea același nume de metodă, dar diferă în semnătura parametrilor. Această caracteristică nu este acceptată de python. Dacă mai multe metode au aceeași funcție, atunci cea mai nouă implementare a funcției va înlocui implementarea anterioară a funcției.
Polimorfismul funcției
Polimorfismul funcției în python poate fi clasificat în două polimorfism definit de utilizator și polimorfism predefinit.
Putem implementa polimorfismul definit de utilizator pentru a apela aceeași funcție cu o semnătură de parametru diferită, iar acest lucru poate fi considerat o mică compensare a indisponibilității supraîncărcării metodei în python. Să parcurgem un exemplu de cod
def mul (a,b,c= 1 ): returnează a*b*c; print(mul( 1 , 2 , 3 )) print(mul( 1 , 2 )) |
În codul de mai sus, chiar dacă numărul de parametri trecuți nu este egal, ambele declarații de tipărire se referă la aceeași metodă. În al doilea apel de funcție, parametrul c este atribuit cu o valoare implicită de 1.
În mod similar, puține metode predefinite în python prezintă caracteristici de polimorfism, în care o singură metodă poate accepta parametri de diferite tipuri de date. Metode precum len() prezintă această caracteristică. Și iată codul pentru a ilustra asta.
print(len([ 1 , 2 , 3 , 4 ])) print(len(( 1 , 2 , 3 , 4 ))) print(len( „python” )) print(len({ „cheia1” : „valoarea1” , „cheia2” : „valoarea2” })) |
În codul de mai sus, aceeași metodă len() este utilizată pentru o listă, tuplu, șir și dicționar.
Checkout: aplicații Python în lumea reală
Supraîncărcarea operatorului
Un operator precum „+” poate fi folosit în mai multe moduri. De exemplu, poate fi folosit pentru a adăuga două numere, șiruri, precum și liste etc. Și iată codul pentru a demonstra asta.
l1=[ 1 , 2 , 3 ] l2=[ 3 , 4 , 5 ] n1= 2 n2= 3 s1= „hei” s2= „acolo” print(l+l1) imprimare(s1+s2) imprimare(n1+n2) |
Suprascrierea metodei
Suprascrierea metodei este, de asemenea, considerată ca polimorfism de rulare și este acceptată de multe limbaje precum java, c++ și python.
Această caracteristică este legată de moștenire, o clasă copil în python moștenește funcțiile membre și variabilele membre din clasa sa părinte. Și dacă simțim că implementarea metodei clasei părinte nu este relevantă, atunci putem suprascrie acea metodă în clasa copil. Și modificarea funcțiilor membru conform cerințelor din clasa copil este denumită suprascriere metodei.
clasa cu doua roti : def fuel (auto): print( „Mașina cu două roți are nevoie de combustibil pentru a funcționa” ) capacitatea def (auto): print( „bicicletele sunt potrivite pentru maximum 2 persoane” ) clasa electric_bike (două_roți): def fuel (auto): print( „bicicletele electrice funcționează cu o baterie” ) clasa benzină_bicicletă (două_roți): def fuel (auto): print( „bicicleta pe benzină funcționează pe benzină” ) bicicletă=două_roți() ebike=bicicletă_electrică() pbike=petrol_bike() bicicletă.combustibil() capacitate.biciclete() ebike.fuel() ebike.capacity() pbike.fuel() pbike.capacity() |
În codul de mai sus, two_wheeler este clasa părinte și electric_bike, petrol_bike sunt clasele pentru copii. Iar metodele fuel(), capacity() sunt moștenite de clasele copil electric_bike și petrol_bike. Acum, putem actualiza implementarea metodelor, dacă este necesar, iar în cadrul clasei electric_bike am reimplementat metoda fuel(), în mod similar reimplementat metoda fuel() în clasa petrol_bike.
De exemplu, în codul ebike.fuel() se afișează „bicicletele electrice funcționează cu o baterie” și pbike.fuel() se afișează bicicletele pe benzină care funcționează pe benzină”.
Polimorfismul în metodele de clasă
Python permite ca diferite clase să aibă același nume de metodă, iar acest lucru face parte din caracteristica polimorfism. Iar invocarea metodei se bazează pe obiectul pe care îl folosim pentru a numi metoda.
bicicleta clasa : def fuel (auto): print( „bicicleta nu are nevoie de combustibil!” ) capacitatea def (auto): print( „bicicletele sunt potrivite pentru plimbare cu o singură persoană” ) clasa electric_bike : def fuel (auto): print( „bicicletele electrice funcționează pe baterie” ) capacitatea def (auto): print( „bicicletele electrice sunt potrivite pentru maximum 2 persoane” ) clasa benzina_biciclete : def fuel (auto): print( „bicicleta pe benzină funcționează pe benzină” ) capacitatea def (auto): print( „bicicletele pe benzină sunt potrivite pentru maximum 2 persoane” ) ecobicicletă=bicicletă() ebike=bicicletă_electrică() pbike=petrol_bike() l=[ecobike,ebike,pbike] pentru obj în l: obj.fuel() capacitatea obj.() |
În codul de mai sus, am creat trei obiecte din cele trei clase bicicletă, bicicletă_electrică și bicicletă_petrol. Și toate cele trei clase au aceleași nume de metodă. Acum, este sarcina compilatorului să decidă ce metodă trebuie invocată în funcție de tipul de obiect folosit pentru a invoca metoda.
De exemplu, ecobike.fuel() va invoca metoda fuel() din clasa de biciclete și ebike.fuel() va invoca metoda fuel() din clasa electric_bike. Adăugăm toate aceste obiecte la o listă și în fiecare iterație, vom apela aceleași nume de funcție, dar tipul de obiect care invocă metoda se va schimba. În prima iterație se numește metodele clasei de biciclete, iar metodele electric_bike, petrol_bike în iterațiile ulterioare.
Citiți: Idei și subiecte pentru proiecte Python
Concluzie
În acest articol, am înțeles ce înseamnă polimorfismul, am discutat despre modul în care python este diferit în cazul supraîncărcării metodei. Am parcurs demonstrații ale diferitelor posibilități de polimorfism în pythons, cum ar fi supraîncărcarea operatorului, polimorfismul funcției, suprascrierea metodei și polimorfismul în metodele de clasă.
Acum că sunteți conștient de polimorfismul în python, implementați următorul cod python folosind toate aceste caracteristici!
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.