Un ghid complet pentru supraîncărcarea metodei în Python (cu exemple)
Publicat: 2022-04-23Supraîncărcarea este capacitatea unei funcții, metode sau operator de a funcționa diferit atunci când îi transmiteți diferiți parametri. Supraîncărcarea metodei sau supraîncărcarea funcției în Python au termeni folosiți în mod obișnuit. Unele dintre principalele avantaje ale supraîncărcării sunt că puteți utiliza o singură metodă în mai multe moduri, ceea ce vă ajută să vă păstrați codul mai curat și să eliminați complexitatea atunci când lucrați cu o echipă.
Ce este supraîncărcarea metodei?
În programarea orientată pe obiecte, supraîncărcarea metodei este utilizată în scenariile în care, pentru un anumit obiect, o anumită metodă poate fi apelată în mai multe moduri, în funcție de cerințele proiectului.
Exemple de supraîncărcare a metodei în Python sunt discutate în detaliu mai târziu în articol.
Ce este suprascrierea metodei?
Suprascrierea metodei în Python este similară supraîncărcării metodei, cu excepția faptului că suprascrierea metodei are loc între o subclasă și o superclasă. Are aceiași parametri ca și când sunt apelate metodele. Cu toate acestea, ele se comportă diferit, deoarece unele dintre funcționalități sunt suprascrise din superclasă.
Exemplu de înlocuire a metodei
clasa X:
def method1(self):
print('Sunt prima caracteristică a clasei X')
def method2(self):
print('Sunt a doua caracteristică a clasei X')
clasa Y(X):
def method1(self):
print('Sunt prima caracteristică modificată a clasei X din clasa Y')
def method3(self):
print('Sunt o caracteristică a clasei Y')
obj = Y()
obj.method1()
Ieșire:
Sunt prima caracteristică modificată a clasei X din clasa Y
metoda 1 a fost înlocuită de clasa Y.
Învață cursuri de știință a datelor online la upGrad
Supraîncărcarea metodei în Python
Problema cu supraîncărcarea metodei în Python este că Python nu o acceptă implicit. Cu toate acestea, există soluții pentru a face același lucru.
Problema
Să luăm în considerare următorul cod:
def add(a, b):
s = a + b
print(e)
def add(a, b, c):
s = a + b + c
print(e)
# add(8, 9) arată eroarea
adaugă (8, 9, 2)
La prima vedere, codul arată bine, dar când încercați să-l executați cu două argumente, Python vă va arăta o eroare deoarece în Python, când aveți mai multe metode cu același nume, dar un număr diferit de argumente, doar se poate folosi cea mai recentă metodă definită.
Există două moduri diferite prin care putem depăși această problemă a supraîncărcării metodei în Python.
1: Utilizarea acelorași metode diferă în funcție de tipul de date al argumentelor
Putem vedea un argument pentru a cunoaște tipul de date, împreună cu *args care permite trecerea unui număr variabil de argumente unei metode în Python. Apoi putem folosi instrucțiuni if pentru a controla modul în care metoda se comportă în funcție de intrare.
COD:
def add(dt, *args):
dacă dt =='int':
s = 0
dacă dt =='str':
s = ”
pentru x în argumente:
s = s + x
print(e)
add('int', 11, 9)
add(„str”, „Bună,”, „Ce mai faci?”)
Ieșire:
20
Salut ce mai faci?
Aceasta a fost prima soluție pentru a implementa supraîncărcarea metodei în Python.
Explorați cursurile noastre populare de știință a datelor
Program Executive Postuniversitar în Știința Datelor de la IIITB | Program de certificat profesional în știința datelor pentru luarea deciziilor de afaceri | Master în Știința Datelor de la Universitatea din Arizona |
Program de certificat avansat în știința datelor de la IIITB | Program de certificat profesional în știința datelor și analiză de afaceri de la Universitatea din Maryland | Vedeți toate cursurile de știință a datelor |
2: Utilizarea decoratorului de expediere multiplă (mod mai eficient)
Multiple Dispatch Decorator este mai puțin o soluție de soluție și funcționează exact așa cum trebuie. Îl puteți instala folosind pip3.
pip3 instalează mai multe expedieri
COD:
din expediere multiplă de import
@dispatch(int,int) # pentru 2 argumente întregi
def add(n1,n2):
s = n1 + n2
print(e)
@dispatch(int,int,int) # pentru 3 argumente întregi
def add(n1,n2,n3):
s = n1 + n2 + n3
print(e)
@dispatch(float,float,float) # pentru argumentele float
def add(n1,n2,n3):
s = n1 + n2 + n3
print(e
adăugați (5,2)
adaugă (6,1,4)
adaugă (3.4,1.2,5.6)
Ieșire:
7
11
10.2
La executare, dispecerul realizează un nou obiect care stochează diferite implementări ale metodei și decide metoda de selectat în funcție de tipul și numărul de argumente transmise la apelarea metodei. În acest fel, metoda de supraîncărcare în Python este mai eficientă.
Citiți articolele noastre populare despre știința datelor
Calea de carieră în știința datelor: un ghid cuprinzător de carieră | Creșterea carierei în știința datelor: viitorul muncii este aici | De ce este importantă știința datelor? 8 moduri în care știința datelor aduce valoare afacerii |
Relevanța științei datelor pentru manageri | Ultima fișă pentru știința datelor pe care ar trebui să o aibă fiecare cercetător de date | Top 6 motive pentru care ar trebui să devii un Data Scientist |
O zi în viața omului de știință a datelor: ce fac ei? | Mitul distrus: Știința datelor nu are nevoie de codare | Business Intelligence vs Data Science: Care sunt diferențele? |
Concluzii
Dacă doriți să intrați în domeniul științei datelor, Python este un prim pas bun de făcut. Pentru a aprofunda și a studia subiectul în continuare, puteți consulta cursuri avansate de certificare online, cum ar fi Programul Executive în Știința datelor de la IIIT-Bangalore în asociere cu upGrad . Acest program acoperă aspectele importante ale subiectului și oferă o mulțime de beneficii suplimentare, cum ar fi asistență la locul de muncă, mentorat 1:1, asistență online, prelegeri live și module suplimentare opționale pentru entuziaștii care doresc să-și îmbunătățească abilitățile.
Care este diferența dintre o funcție și o metodă în Python?
În Python, există două tipuri de funcții: funcții încorporate și funcții definite de utilizator. print() și len() sunt exemple de funcții încorporate. Funcțiile definite de utilizator în python sunt funcții pe care le putem defini noi înșine pentru a face o anumită sarcină de mai multe ori într-un program tipic. Metoda este la fel ca o funcție, cu excepția faptului că metodele aparțin unei clase și pot fi apelate numai pe un obiect. (Sintaxă: obj.method())
Cum aleg între Python și R?
Python și R sunt cele două limbaje de top utilizate pentru Data Science. În timp ce ce să utilizați depinde de mai mulți factori, cum ar fi compania către care doriți, tipul de proiect, cerințele clientului etc., în general, dacă sunteți începător în programare, lucrând într-un mediu de inginerie, construind aplicații la scară largă, Python este o alegere grozavă. Pe de altă parte, dacă aveți experiență anterioară în programare și doriți să rulați rapid sarcini de analiză a datelor și să vă vizualizați datele folosind grafice frumoase pentru a lua o decizie mai bună din punct de vedere statistic, R este calea de urmat.
Cât timp durează să stăpânești Data Science?
Fiecare are propriul ritm de învățare. Deși, pentru un începător fără experiență anterioară în programare, îți va lua aproape 6-7 luni pentru a-ți consolida elementele fundamentale. Postează asta, depinde din nou de cât de mult exersezi și de proiectele la care să lucrezi. Dacă urmați o certificare online, ar trebui să o puteți stăpâni în aproximativ un an.