Wprowadzenie do przeciążenia Pythona
Przeciążenie to proces o tej samej nazwie dla więcej niż jednego bytu (metody, operatory itp.), Ale różnią się one atrybutami. Różnica w atrybutach może wynikać z różnicy w liczbie atrybutów lub różnicy w rodzaju atrybutów. Innymi słowy z perspektywy encji (metody, operatory itp.) Można ją opracować lub wyjaśnić jako zdolność encji do zachowywania się inaczej w zależności od parametrów, które zostały do niej podane. W Pythonie, podobnie jak w większości innych języków programowania wysokiego poziomu, przeciążenie Pythona można osiągnąć na dwa sposoby lub instancje, są one wymienione poniżej
- Przeciążenie funkcji lub metod (przeciążenie funkcji).
- Przeciążenie operatorów (przeciążenie operatora).
Przeciążenie funkcji w Pythonie
Przeciążanie metod nie jest koncepcją stosowaną w pythonie, ale można to osiągnąć za pomocą kilku technik. Przede wszystkim pojęcie przeciążenia metody można podzielić na dwie różne koncepcje,
- Przeciążenie funkcji zdefiniowanych przez użytkownika.
- Przeciążenie domyślnych funkcji.
1. Przeciążenie funkcji zdefiniowanych przez użytkownika
Przeciążenie funkcji zdefiniowanej przez użytkownika można osiągnąć w pythonie, ustawiając wartość parametru lub argumentu jako none. Jeśli więc argument jest ustawiony jako brak, funkcja reaguje w jeden sposób, gdy wartość nie jest przekazywana dla tego argumentu, i w inny sposób, gdy wartość nie jest przekazywana dla tego samego argumentu.
Przykład:
#!/usr/bin/env python
class Overloading_test:
def overloading_function(self, argument1 = 0, argument2 = 0 ):
if argument1 is not None or argument2 is not None:
print('Method Overloading parameter count :', (int( argument1) + int(argument2)))
else:
print( ' Method Overloading without parameters ' )
# Create instance
object1 = Overloading_test()
# Call the method with no arguments
object1.overloading_function()
# Call the method with 1 argument
object1.overloading_function(1)
# Call the method with 2 argument
object1.overloading_function(1, 1)
Wynik:
2. Przeciążenie funkcji domyślnych lub predefiniowanych
Przeciążenie wbudowanych funkcji polega na zdefiniowaniu wstępnie zdefiniowanej funkcji, która ma zostać przeciążona w klasie python jako funkcja specjalna. Kiedy więc predefiniowana funkcja zostanie zadeklarowana jako funkcja specjalna w klasie python, interpreter użyje tej funkcji specjalnej jako deklaracji dla predefiniowanego wywołania. Poniższy przykład dokładnie wyjaśnia ten proces.
Przykład:
rozważmy funkcję len (), która jest używana do określania długości elementu dla tego przykładu, poniższy przykład pokazuje standardowe użycie funkcji długości bez sugerowania przeciążenia i publikuje odpowiedni wpływ.
# Using len() function without method overloading
Lower_Case = ( ' a ', ' b ', ' c ', ' d ', ' e ', ' f ', ' g ', ' h ', ' i ', ' j ', ' k ', ' l ', ' m ', ' n ', ' o ', ' p ', ' q ', ' r ', ' s ', ' t ', ' u ', ' v ', ' w ', ' x ', ' y ', ' z ' ) Upper_Case = ( ' A ', ' B ', ' C ', ' D ', ' E ', ' F ', ' G ', ' H ', ' I ', ' J ', ' K ', ' L ', ' M ', ' N ', ' O ', ' P ', ' Q ', ' R ', ' S ', ' T ', ' U ', ' V ', ' W ', ' X ', ' Y ', ' Z ' ) print(' Collection used for List1 : ', type(Lower_Case))
print(' Collection used for list2 : ', type(Upper_Case))
print(' Total count of Alphabets in list1 : ', len(Lower_Case))
print(' Total count of Alphabets in list2 : ', len(Upper_Case))
Wynik:
Teraz użyjmy przeciążenia metody dla funkcji len () w tym samym fragmencie kodu
class overloading:
def __init__(self, argument1, argument2):
self.argument1 = argument1
self.argument2 = argument2
def __len__(self):
return argument1+argument2
Lower_Case = ( ' a ', ' b ', ' c ', ' d ', ' e ', ' f ', ' g ', ' h ', ' i ', ' j ', ' k ', ' l ', ' m ', ' n ', ' o ', ' p ', ' q ', ' r ', ' s ', ' t ', ' u ', ' v ', ' w ', ' x ', ' y ', ' z ' ) Upper_Case = ( ' A ', ' B ', ' C ', ' D ', ' E ', ' F ', ' G ', ' H ', ' I ', ' J ', ' K ', ' L ', ' M ', ' N ', ' O ', ' P ', ' Q ', ' R ', ' S ', ' T ', ' U ', ' V ', ' W ', ' X ', ' Y ', ' Z ' ) print(' Collection used for List1 : ', type(Lower_Case))
print(' Collection used for list2 : ', type(Upper_Case))
argument1 = len(Lower_Case)
argument2 = len(Upper_Case)
# Using len() function without method overloading
Object1 = overloading(argument1, argument2)
print('Overall length of both the lists : ', len(Object1))
Wynik:
Możemy wyraźnie zauważyć, że zamiast używać wbudowanej funkcji długości używana jest przeciążona funkcja specjalna __len __ (), która powoduje, że dane wyjściowe wypisują zsumowaną długość obu list zamiast ich indywidualnej długości.
Przeciążenie operatora w języku Python
Wymaga to rozszerzonej interpretacji operatora bardziej niż pierwotnego celu. Najczęstszym przykładem jest operator dodawania „+”, w którym można go użyć do zwykłego dodawania, a także do łączenia dwóch różnych ciągów.
Przykład:
# add two numbers
print(1 + 2)
# concatenate two strings
print("Hello"+"World")
Wynik:
Zalety przeciążenia Pythona
- Zwiększa możliwość ponownego użycia kodu.
- Zwiększa czytelność kodu.
- Złożoność kodu jest znacznie zmniejszona.
Wniosek
Przeciążenie odgrywa istotną rolę w wielu językach programowania wysokiego poziomu. W przypadku Pythona, chociaż nie są one bezpośrednio sugerowane, odgrywają znaczącą rolę w unikaniu powtarzalnego używania kodu.
Polecane artykuły
Jest to przewodnik po przeciążaniu Pythona. Tutaj omawiamy zdefiniowane przez użytkownika i predefiniowane funkcje wraz z ich operatorem i zaletami. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej-
- Zmienne w języku Python (4 najlepsze typy)
- Przeciążenie a zastąpienie przykładami
- Operacje na plikach Python
- Edytory Python (6 najlepszych redaktorów)
- Przykłady wbudowanych funkcji Pythona