Úvod do přetížení Pythonu

Přetížení je proces, který má stejné jméno pro více než jednu entitu (metody, operátory atd.), Ale liší se svými atributy. Rozdíl v atributech může být způsoben rozdílem v počtu atributů nebo rozdílem v typu atributů. Jinými slovy z pohledu entity (metody, operátory atd.) Může být navrženo nebo vysvětleno jako schopnost entity chovat se odlišně podle parametrů, které jí byly dodány. V pythonu, stejně jako ve většině ostatních programovacích jazyků na vysoké úrovni, lze přetížení pythonu dosáhnout dvěma způsoby nebo příklady, jsou uvedeny níže,

  • Přetížení funkcí nebo metod (přetížení funkce).
  • Přetížení operátorů (přetížení operátorů).

Funkce Přetížení v Pythonu

Přetížení metod není v pythonu použitým konceptem, ale lze jej dosáhnout několika technikami. V první řadě lze koncept přetížení metody rozdělit do dvou různých konceptů,

  • Přetížení uživatelem definovaných funkcí.
  • Přetížení výchozích funkcí.

1. Přetížení uživatelsky definovaných funkcí

Uživatelem definované přetížení funkce lze dosáhnout v pythonu nastavením hodnoty parametru nebo argumentu jako žádné. Pokud je tedy argument nastaven jako žádný, pak funkce reaguje jedním způsobem, když hodnota není předána pro tento argument, a jiným způsobem, když není hodnota předána pro stejný argument.

Příklad:

#!/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)

Výstup:

2. Přetížení výchozích nebo předdefinovaných funkcí

Přetížení vestavěných funkcí zahrnuje definování předdefinované funkce, u které se očekává, že bude ve třídě python přetížena jako zvláštní funkce. Takže když je předdefinovaná funkce deklarována jako speciální funkce ve třídě python, interpret použije tuto speciální funkci jako deklaraci pro předdefinované volání. Níže uvedený příklad přesně vysvětluje tento proces.

Příklad:

Uvažujme funkci len (), která se v tomto příkladu používá pro určení délky položky, níže uvedený příklad ukazuje standardní použití funkce délky bez implikování přetížení a zaúčtuje odpovídající dopad.

# 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))

Výstup:

Nyní použijeme přetížení metody pro funkci len () ve stejném fragmentu kódu

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))

Výstup:

Můžeme si jasně všimnout namísto použití obvyklých vestavěných funkcí délky, používá se přetížená speciální funkce __len __ (), která umožňuje výstupu vytisknout sčítanou délku obou seznamů namísto jejich individuální délky.

Přetížení operátora v Pythonu

To zahrnuje rozšířenou interpretaci operátora více, než je jeho původní účel. Nejběžnějším příkladem je operátor sčítání '+', kde může být použit pro obvyklé sčítání a také pro spojení dvou různých řetězců.

Příklad:

# add two numbers
print(1 + 2)
# concatenate two strings
print("Hello"+"World")

Výstup:

Výhody přetížení Pythonu

  • Zvyšuje opakovatelnost kódu.
  • Zvyšuje přehlednost kódu.
  • Složitost kódu je značně snížena.

Závěr

Přetížení hraje zásadní roli v mnoha programovacích jazycích na vysoké úrovni. V případě pythonu, i když nejsou implikovány přímo, mají významnou roli při zamezení opakovaného používání kódu.

Doporučené články

Toto je průvodce Python Overloading. Zde diskutujeme o uživatelsky definovaných a předem definovaných funkcích spolu s jejich operátorem a výhodami. Další informace naleznete také v následujících článcích

  1. Proměnné Pythonu (Top 4 typy)
  2. Přetížení vs Overriding s příklady
  3. Operace se soubory Python
  4. Editory Python (6 nejlepších editorů)
  5. Příklady vestavěných funkcí Pythonu

Kategorie: