Úvod do preťaženia Pythonu
Preťaženie je proces, ktorý má rovnaké meno pre viac ako jednu entitu (metódy, operátori atď.), Líšia sa však svojimi atribútmi. Rozdiel v atribútoch môže byť spôsobený rozdielom v počte atribútov alebo rozdielom v type atribútov. Inými slovami z perspektívy entity (metódy, operátori atď.) Je možné ju navrhnúť alebo vysvetliť ako schopnosť entity správať sa odlišne podľa parametrov, ktoré sú jej dodávané. V pythone, rovnako ako väčšina ostatných programovacích jazykov na vysokej úrovni, je možné preťaženie pythónom dosiahnuť dvoma spôsobmi alebo v niektorých prípadoch, ktoré sú uvedené nižšie,
- Preťaženie funkcií alebo metód (preťaženie funkcií).
- Preťaženie operátorov (preťaženie operátorov).
Funkcia preťaženia v Pythone
Preťaženie metód nie je v pythone aplikovanou koncepciou, ale dá sa dosiahnuť pomocou niekoľkých techník. Predovšetkým pojem preťaženie metódou možno rozdeliť do dvoch rôznych konceptov,
- Preťaženie užívateľsky definovaných funkcií.
- Preťaženie predvolených funkcií.
1. Preťaženie funkcií definovaných používateľom
Užívateľmi definované preťaženie funkcií sa dá dosiahnuť v Pythone nastavením hodnoty parametra alebo argumentu ako žiadna. Ak je argument nastavený ako žiadny, potom funkcia reaguje jedným spôsobom, keď hodnota nie je odovzdaná pre tento argument, a iným spôsobom, keď hodnota nie je odovzdaná pre ten istý argument.
Prí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ýkon:
2. Preťaženie predvolených alebo preddefinovaných funkcií
Preťaženie vstavaných funkcií zahŕňa definovanie preddefinovanej funkcie, ktorá sa podľa očakávania bude preťažená v pythónovej triede ako špeciálna funkcia. Takže keď je preddefinovaná funkcia deklarovaná ako špeciálna funkcia v pythónovej triede, tlmočník použije túto špeciálnu funkciu ako vyhlásenie pre preddefinované volanie. Nasledujúci príklad presne vysvetľuje tento proces.
Príklad:
uvážme funkciu len (), ktorá sa v tomto príklade používa na určenie dĺžky položky, nižšie uvedený príklad ukazuje štandardné použitie funkcie dĺžky bez toho, aby to znamenalo preťaženie, a zaúčtuje príslušný vplyv.
# 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ýkon:
Teraz používajme preťaženie metódy pre funkciu len () v tom istom útržku 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ýkon:
Jasne si môžeme všimnúť, že namiesto použitia obvyklých zabudovaných dĺžkových funkcií sa používa preťažená špeciálna funkcia __len __ (), vďaka ktorej výstup vytlačí sčítanú dĺžku oboch zoznamov namiesto ich individuálnej dĺžky.
Preťaženie operátora v Pythone
Ide o rozsiahlejšiu interpretáciu prevádzkovateľa, ako je jeho pôvodný účel. Najbežnejším príkladom je operátor sčítania '+', kde sa môže použiť na bežné pridávanie a tiež na spojenie dvoch rôznych reťazcov.
Príklad:
# add two numbers
print(1 + 2)
# concatenate two strings
print("Hello"+"World")
Výkon:
Výhody preťaženia Python
- Zvyšuje možnosti opätovného použitia kódu.
- Zvyšuje prehľadnosť kódu.
- Zložitosť kódu sa výrazne znižuje.
záver
Preťaženie zohráva dôležitú úlohu v mnohých programovacích jazykoch na vysokej úrovni. V prípade pythonu, hoci nie sú priamo naznačené, majú významnú úlohu pri zamedzení opakovaného použitia kódu.
Odporúčané články
Toto je sprievodca Python Overloading. Tu diskutujeme o užívateľom definovaných a preddefinovaných funkciách spolu s ich operátorom a výhodami. Viac informácií nájdete aj v nasledujúcich článkoch
- Premenné Pythonu (Top 4 typy)
- Preťaženie v porovnaní s príkladmi
- Operácie so súbormi Python
- Editory Python (6 najlepších editorov)
- Príklady zabudovaných funkcií Pythonu