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-

  1. Zmienne w języku Python (4 najlepsze typy)
  2. Przeciążenie a zastąpienie przykładami
  3. Operacje na plikach Python
  4. Edytory Python (6 najlepszych redaktorów)
  5. Przykłady wbudowanych funkcji Pythona