Nadpisywanie metod w Pythonie: co to jest, jak to zrobić?

Opublikowany: 2021-09-28

Python to język ogólnego przeznaczenia wysokiego poziomu, którego entuzjaści programowania komputerowego muszą się nauczyć. Podobnie jak inne powszechnie używane języki komputerowe, takie jak JAVA, C++, Golang, Ruby itp. Python jest również językiem programowania obiektowego, w którym kodowanie zależy od klas i obiektów. Koncepcja umożliwia programistom tworzenie prostych kodów wielokrotnego użytku, które następnie oznaczają poszczególne obiekty. Istnieje kilka przydatnych funkcji oferowanych przez języki OOP, z których jedną jest zastępowanie metod.

W tym artykule zrozumiemy koncepcję dziedziczenia, aby zbadać nadpisywanie metod w Pythonie. Zacznijmy od zrozumienia, czym jest klasa.

Spis treści

Czym jest klasa?

Klasa to funkcja lub instancja w paradygmacie programowania obiektowego. Jest to rozszerzony szablon kodowania programu w programie. Klasy pomagają programistom wprowadzać początkowe dane każdego obiektu (tablice, ciągi, zmienne itp.) w momencie tworzenia. Pozwalają nam również określić charakterystykę klasy i określić, w jaki sposób będą przetwarzać dane lub dostarczać dane wejściowe. W programie istnieją podklasy lub klasy podrzędne w zdefiniowanych klasach nadrzędnych lub nadklasach.

Co to jest dziedziczenie? Jakie są jego zalety?

Dziedziczenie w programowaniu obiektowym to właściwość, która umożliwia dziedziczenie cech klasy do innych klas lub podklas. Pomaga to zapobiegać redundancji danych, lepiej kompilować program i ograniczać zakres popełnianych błędów.

Ta zdolność klasy do wyprowadzania lub dziedziczenia funkcji z innych klas jest znana jako dziedziczenie. Klasa, której cechy i właściwości są używane do tworzenia podklasy, nazywana jest klasą Parent.

Oto korzyści płynące z dziedziczenia:

  • Dziedziczenie pozwala użytkownikom dobrze reprezentować relacje w czasie rzeczywistym.
  • Pozwala na ponowne wykorzystanie kodów. Pozwala także programistom na dostarczenie większej ilości cech do klasy.
  • Pozwala na przejście. Załóżmy, że klasa Q wywodzi cechy z klasy W, wtedy podklasy Q automatycznie dziedziczą po klasie W.

Rodzaje dziedziczenia

Istnieją trzy rodzaje spadków, które są następujące;

1. Pojedyncze dziedziczenie

W pojedynczym dziedziczeniu klasa pochodna może dziedziczyć funkcje z jednej klasy nadrzędnej. Umożliwia ponowne wykorzystanie kodów, a także dodawanie nowych funkcji.

2. Wielokrotne dziedziczenie

Odnosi się do przeniesienia cech więcej niż jednej klasy nadrzędnej do podklasy. Tutaj cechy klasy bazowej są automatycznie dziedziczone do podklasy.

3. Dziedziczenie wielopoziomowe

Gdy cechy klasy nadrzędnej i podklasy są dalej dziedziczone do innej klasy pochodnej, nazywa się to dziedziczeniem wielopoziomowym.

Co to jest zastępowanie metod w Pythonie?

Przesłanianie metod jest cechą języków programowania obiektowego, w których podklasa lub klasa podrzędna może zapewnić programowi określone cechy lub określony proces implementacji dostarczonych danych, które są już zdefiniowane w klasie nadrzędnej lub nadklasie.

Gdy te same wartości zwracane, parametry lub nazwy są wprowadzane w podklasie, jak w klasie nadrzędnej, metoda implementacji w podklasie zastępuje metodę wymienioną w klasie nadrzędnej. Nazywa się to nadpisywaniem metody.

Jego wykonanie zależy od danych, które są używane do wywołania metody, a nie od danych referencyjnych już dostarczonych w klasie nadrzędnej. Jeśli obiekt klasy nadrzędnej jest używany do wywołania metody implementacji, która jest specyficzna dla programu, wywoływana jest wersja metody zapisana w klasie nadrzędnej. Z drugiej strony, jeśli obiekt podklasy zostanie użyty do wywołania metody, wykonanie będzie się odbywać zgodnie z cechami wymienionymi w podklasie. Jeśli jesteś początkującym i chciałbyś zdobyć doświadczenie w nauce o danych, zapoznaj się z naszymi kursami z nauk o danych.

Funkcje nadpisywania metody

W tej sekcji omówimy najważniejsze funkcje, które oferuje nadpisywanie metody w Pythonie:

  • Zastępowanie metod pozwala na użycie funkcji i metod w Pythonie, które mają taką samą nazwę lub podpis.
  • Przeciążanie metod jest przykładem polimorfizmu środowiska uruchomieniowego.
  • W zastępowaniu metod zawsze wymagane jest użycie funkcji dziedziczenia.
  • Przeciążanie metod odbywa się między klasami nadrzędnymi a klasami podrzędnymi.
  • Służy do zmiany zachowania i wdrażania istniejących metod.
  • Zawsze potrzebne są co najmniej dwie klasy do nadpisywania metod.

Zrozumienie nadpisywania metod: dziedziczenie wielopoziomowe i wielopoziomowe

Dziedziczenie wielopoziomowe i wielopoziomowe to dwa rodzaje dziedziczenia oferowane przez większość języków programowania obiektowego. W tej sekcji zobaczymy, jak nadpisywanie metod jest używane w różnych i wielopoziomowych dziedziczeniach:

1. Wielokrotne dziedziczenie

W tego rodzaju dziedziczeniu klasy lub obiektu, podklasa dziedziczy cechy i cechy wielu klas lub baz nadrzędnych. Na przykład istnieją trzy różne klasy nadrzędne — klasa.1, klasa.2, klasa.3 oraz klasa.a, która jest klasą potomną wykonującą cechy wielu dziedziczeń. Class.a będzie zawierał cechy odziedziczone ze wszystkich trzech klas bazowych.

Oto przykładowy program:

# Definiowanie klasy rodzicielskiej 1

klasa Rodzic1():

# Metoda pokazu rodzica

def pokaż (siebie):

print(„Wewnątrz rodzica1”)

# Definiowanie klasy rodzicielskiej 2

klasa Rodzic2():

# Metoda pokazu rodzica

def wyświetlacz (własny):

print(„Wewnątrz rodzic2”)

# Definiowanie klasy potomnej

klasa Dziecko(Rodzic1, Rodzic2):

# Metoda pokazu dziecka

def pokaż (siebie):

drukuj („Wewnątrz dziecko”)

# Kod kierowcy

obj = Dziecko ()

obj.pokaż()

obj.wyświetlacz()

Wyjście:

Wewnątrz dziecka

Rodzic wewnętrzny2

2. Dziedziczenie wielopoziomowe

W tego rodzaju dziedziczeniu klasy lub obiektu podklasa jest dziedziczona bezpośrednio z klasy bazowej, już noszącej cechy klasy nadrzędnej. Zasadniczo przypomina to relację ojciec-syn lub dziadek-wnuk. Cechy podklasy są unikalne dla jej klasy nadrzędnej. Na przykład istnieje klasa nadrzędna o nazwie class.Q, a podklasa jest tworzona w rozszerzeniu class.Q. Tutaj podklasa może działać jako klasa podstawowa dla innej podklasy.

Oto przykładowy program:

klasa Parent():

def wyświetlacz (własny):

print("Wewnętrzny rodzic")

klasa Dziecko (Rodzic):

# Metoda pokazu dziecka

def pokaż (siebie):

drukuj („Wewnątrz dziecko”)

klasa Wnuczka (Dziecko):

# Metoda pokazu dziecka

def pokaż (siebie):

drukuj („Wewnątrz wnuka”)

# Kod kierowcy

g = Wnuczka()

g.pokaż()

g.wyświetlacz()

Wyjście :

Wewnątrz wnuczka

Wewnętrzny rodzic

Wywoływanie metod klas bazowych w ramach metod przesłoniętych

Istnieje metoda, w której metody klasy nadrzędnej mogą być wywoływane pomiędzy nadpisanymi metodami. Można to zrobić za pomocą następujących procesów:

  • Korzystanie z nazwy klasy

pisanie metody nazwy klasy w nadpisanej metodzie w podklasie może wywołać metodę dostarczoną w klasie nadrzędnej.

  • Korzystanie z funkcji super()

język programowania Pythona oferuje funkcję o nazwie super(), która jest używana w szczególności do odwoływania się do klasy nadrzędnej.

Wniosek

Przesłanianie metod jest jedną z najważniejszych cech języka Python. Właściwość znajduje szerokie zastosowanie w programowaniu aplikacji do nauki o danych i pozwala na zwartą i wydajną analizę danych. Nadpisywanie metod ułatwia również kompilację kodów i ponowne sprawdzanie. Istnieje kilka warunków wstępnych do korzystania z tej funkcji: zrozumienie podstawowej koncepcji klas i dziedziczenia.

Jeśli chcesz dowiedzieć się więcej o zastępowaniu metod w Pythonie, sugerujemy wzięcie udziału w 18-miesięcznym programie Master of Science in Data Science . upGrad oferuje ten kurs z IIIT Bangalore i Liverpool John Moore's University. Kurs uczy takich umiejętności, jak statystyka, analityka predykcyjna za pomocą Pythona, uczenie maszynowe, wizualizacja danych, analiza Big Data i wiele innych. Studenci z dużą znajomością pojęć Pythona są dobrze przygotowani do rozwiązywania takich przedmiotów, jak głębokie uczenie, przetwarzanie języka naturalnego, analityka biznesowa i inżynieria danych.

Skontaktuj się z nami już dziś, aby rozpocząć swoją podróż edukacyjną!

Rozróżnij nadpisywanie i przeciążanie.

Podstawowa różnica między przesłanianiem a przeciążaniem polega na tym, że przesłanianie odbywa się między tymi samymi metodami lub tymi samymi sygnaturami, podczas gdy przeciążanie występuje między tymi samymi metodami klasy.

1. Przeciążanie metody jest przykładem polimorfizmu w czasie kompilacji, podczas gdy przeciążanie metody jest przykładem polimorfizmu w czasie wykonywania.
2. Przeciążania metod nie można wykonać w Pythonie, natomiast wykonanie przesłonięcia metod jest możliwe pod pewnymi warunkami.

Jakie są cechy nadpisywania metody?

Oto cechy nadpisywania metod:

1. Jest przykładem polimorfizmu środowiska uruchomieniowego.
2. Ustanawia połączenie między klasą rodzica a klasą dziecka.
3. Ponieważ łączy co najmniej jedną klasę, musimy użyć funkcji dziedziczenia.
4. Nadpisywanie metod pomaga używać jednej nazwy dla więcej niż jednej funkcji.

Używamy przesłonięcia metod, aby zaimplementować metodę klasy nadrzędnej w klasie pochodnej.

Jakie są rodzaje spadków? Czy można zastąpić prywatne metody w Pythonie?

Przede wszystkim nadpisywanie metod wykorzystuje wielopoziomowe i wielokrotne dziedziczenie.

W dziedziczeniu wielopoziomowym podklasa jest dziedziczona z klasy bazowej składającej się z cech klasy nadrzędnej. Ale w przypadku dziedziczenia wielokrotnego podklasa wykazuje cechy więcej niż jednej lub więcej klas lub baz nadrzędnych.

Nadpisywanie metod prywatnych nie może się zdarzyć w Javie, ale jest możliwe w Pythonie za pomocą procesu znanego jako „manglowanie nazw”.