Ú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

  1. Premenné Pythonu (Top 4 typy)
  2. Preťaženie v porovnaní s príkladmi
  3. Operácie so súbormi Python
  4. Editory Python (6 najlepších editorov)
  5. Príklady zabudovaných funkcií Pythonu

Kategórie: