Kompletny przewodnik po przeciążaniu metod w Pythonie (z przykładami)
Opublikowany: 2022-04-23Przeciążanie to zdolność funkcji, metody lub operatora do działania w różny sposób, gdy przekazujesz temu samemu różne parametry. Przeciążanie metod lub Przeciążanie funkcji w Pythonie mają powszechnie używane terminy. Niektóre z głównych zalet przeciążania polegają na tym, że możesz używać jednej metody na wiele sposobów, co pomaga zachować czystszy kod i usuwa złożoność podczas pracy z zespołem.
Co to jest przeciążanie metody?
W programowaniu zorientowanym obiektowo przeciążanie metod jest używane w scenariuszach, w których dla określonego obiektu dana metoda może być wywołana na więcej niż jeden sposób, zgodnie z wymaganiami projektu.
Przykłady przeciążania metod w Pythonie zostały szczegółowo omówione w dalszej części artykułu.
Co to jest zastępowanie metody?
Przesłanianie metod w Pythonie jest podobne do przeciążania metod, z wyjątkiem tego, że przesłanianie metod występuje między podklasą a nadklasą. Ma takie same parametry, jak przy wywoływaniu metod. Jednak zachowują się inaczej, ponieważ niektóre funkcje są nadpisane w superklasie.
Przykład zastępowania metody
klasa X:
def metoda1(własna):
print('Jestem pierwszą cechą klasy X')
def metoda2(własna):
print('Jestem drugą cechą klasy X')
klasa Y(X):
def metoda1(własna):
print('Jestem zmodyfikowaną pierwszą cechą klasy X w klasie Y')
def metoda3(własna):
print('Jestem cechą klasy Y')
obj = Y()
obj.metoda1()
Wyjście:
Jestem zmodyfikowaną pierwszą cechą klasy X w klasie Y
method1 została zastąpiona przez klasę Y.
Ucz się kursów Data Science online na upGrad
Przeciążanie metod w Pythonie
Problem z przeciążaniem metod w Pythonie polega na tym, że Python domyślnie go nie obsługuje. Istnieją jednak sposoby obejścia tego samego.
Problem
Rozważmy następujący kod:
def dodaj(a, b):
s = a + b
wydruk(i)
def dodaj(a, b, c):
s = a + b + c
wydruk(i)
# add(8, 9) pokazuje błąd
dodaj(8, 9, 2)
Na pierwszy rzut oka kod wygląda dobrze, ale gdy spróbujesz go wykonać z dwoma argumentami, Python pokaże ci błąd, ponieważ w Pythonie, gdy masz więcej niż jedną metodę o tej samej nazwie, ale różnej liczbie argumentów, tylko można użyć ostatnio zdefiniowanej metody.
Istnieją dwa różne sposoby rozwiązania tego problemu przeciążania metod w Pythonie.
1: Korzystanie z tych samych metod różni się w zależności od typu danych argumentów
Widzimy argument, aby poznać typ danych, wraz z *args, który pozwala przekazać zmienną liczbę argumentów do metody w Pythonie. Następnie możemy użyć instrukcji if do kontrolowania zachowania metody zgodnie z danymi wejściowymi.
KOD:
def dodaj(dt, *args):
jeśli dt =='int':
s = 0
jeśli dt =='str':
s = ”
dla x w argumentach:
s = s + x
wydruk(i)
add('int', 11, 9)
add("str", "Cześć", "Jak się masz?")
Wyjście:
20
Cześć, jak się masz?
Było to pierwsze obejście, które zaimplementowało przeciążanie metod w Pythonie.
Zapoznaj się z naszymi popularnymi kursami z zakresu nauki o danych
Executive Post Graduate Program in Data Science z IIITB | Profesjonalny program certyfikatów w dziedzinie nauki o danych do podejmowania decyzji biznesowych | Master of Science in Data Science z University of Arizona |
Zaawansowany program certyfikacji w dziedzinie nauki o danych z IIITB | Profesjonalny program certyfikacji w dziedzinie nauki o danych i analityki biznesowej Uniwersytetu Maryland | Wyświetl wszystkie kursy z zakresu Data Science |
2: Korzystanie z Dekoratora wielu wysyłek (bardziej wydajny sposób)
Dekorator wielu wysyłek jest mniej obejściowy i działa dokładnie tak, jak powinien. Możesz go zainstalować za pomocą pip3.
pip3 zainstaluj wiele wysyłek
KOD:
z wielu wysyłek zaimportuj wysyłkę
@dispatch(int,int) # dla 2 argumentów całkowitych
def dodaj(n1,n2):
s = n1 + n2
wydruk(i)
@dispatch(int,int,int) # dla 3 argumentów całkowitych
def dodaj(n1,n2,n3):
s = n1 + n2 + n3
wydruk(i)
@dispatch(float,float,float) # dla argumentów zmiennoprzecinkowych
def dodaj(n1,n2,n3):
s = n1 + n2 + n3
drukuj
dodaj(5,2)
dodaj(6,1,4)
dodaj(3.4,1.2,5.6)
Wyjście:
7
11
10.2
Podczas wykonywania dyspozytor tworzy nowy obiekt, który przechowuje różne implementacje metody i decyduje o wyborze metody w zależności od typu i liczby argumentów przekazanych podczas wywoływania metody. W ten sposób metoda przeciążania w Pythonie jest bardziej wydajna.
Przeczytaj nasze popularne artykuły o Data Science
Ścieżka kariery w Data Science: kompleksowy przewodnik po karierze | Rozwój kariery w dziedzinie Data Science: Nadeszła przyszłość pracy | Dlaczego nauka o danych jest ważna? 8 sposobów, w jakie nauka o danych wnosi wartość do biznesu |
Znaczenie nauki o danych dla menedżerów | Ostateczna ściągawka do nauki o danych, którą każdy badacz danych powinien mieć | 6 najważniejszych powodów, dla których warto zostać analitykiem danych |
Dzień z życia Data Scientist: co robią? | Obalamy mit: analiza danych nie wymaga kodowania | Business Intelligence vs Data Science: Jakie są różnice? |
Wnioski
Jeśli chcesz wejść w dziedzinę Data Science, Python jest dobrym pierwszym krokiem do zrobienia. Aby zagłębić się w temat i dalej studiować ten temat, możesz zapoznać się z zaawansowanymi kursami certyfikacji online, takimi jak Executive Program in Data Science autorstwa IIIT-Bangalore we współpracy z upGrad . Ten program obejmuje ważne aspekty przedmiotu i zapewnia wiele dodatkowych korzyści, takich jak pomoc w pracy, mentoring 1:1, wsparcie online, wykłady na żywo i opcjonalne moduły dodatkowe dla entuzjastów, którzy chcą dalej podnosić swoje umiejętności.
Jaka jest różnica między funkcją a metodą w Pythonie?
W Pythonie istnieją dwa rodzaje funkcji: funkcje wbudowane i funkcje zdefiniowane przez użytkownika. print() i len() to przykłady funkcji wbudowanych. Funkcje zdefiniowane przez użytkownika w pythonie to funkcje, które możemy sami zdefiniować, aby wykonać określone zadanie więcej niż raz w typowym programie. Metoda jest podobna do funkcji, z tą różnicą, że metody należą do klasy i mogą być wywoływane tylko na obiekcie. (Składnia: obj.metoda())
Jak wybrać między Pythonem a R?
Python i R to dwa najlepsze języki używane w Data Science. Chociaż to, czego użyć, zależy od kilku czynników, takich jak firma, do której dążysz, rodzaj projektu, wymagania klienta itp. Ogólnie rzecz biorąc, jeśli jesteś początkującym programistą, pracującym w środowisku inżynierskim tworzącym aplikacje na dużą skalę, Python to świetny wybór. Z drugiej strony, jeśli masz wcześniejsze doświadczenie w programowaniu i chcesz szybko uruchamiać zadania analizy danych i wizualizować dane za pomocą pięknej grafiki, aby podjąć lepszą decyzję statystycznie, R jest drogą do zrobienia.
Jak długo trwa opanowanie Data Science?
Każdy ma swoje własne tempo nauki. Chociaż początkującemu użytkownikowi bez wcześniejszego doświadczenia w programowaniu utrwalenie podstaw zajmie ci około 6-7 miesięcy. Opublikuj to, to znowu zależy od tego, ile ćwiczysz i projektów, nad którymi chcesz pracować. Jeśli zastosujesz się do certyfikatu online, powinieneś być w stanie go opanować w ciągu około roku.