Kompletny przewodnik po przeciążaniu metod w Pythonie (z przykładami)

Opublikowany: 2022-04-23

Przeciąż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.

Spis treści

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.