Python

Preťaženie operátora v Pythone

Preťaženie operátora v Pythone
Preťaženie zodpovedá tendencii metódy alebo operátora konať viacerými spôsobmi v zmysle programovania na základe parametrov poskytovaných technike alebo operandom, na ktorých operátor pracuje. Preťaženie operátora znamená, že predĺžený význam je daný nad ich vopred definovaný funkčný význam.  Operátory Pythonu fungujú pre vstavané triedy, ale pre rôzne typy ten istý operátor koná odlišne. Uvidíme, ako v tejto príručke urobíme preťaženie operátora v Pythone.

Napríklad operátor + môže matematicky pridať dve čísla, skombinovať dva zoznamy alebo zreťaziť reťazce. Tu je jednoduchý program v jazyku Python, ktorý ukazuje letmý pohľad na operátor + použitý na sčítanie a spájanie.

Čo sa stane, ak použijeme tieto operátory pre objekty v a definované užívateľom trieda? Zoberme si nasledujúci program, ktorý sa pokúsi simulovať bod v 2D schéme rozmerov. Nižšie to už vidíte, pretože Python nechápal, ako sa spojiť do dvoch inštancií súradníc, a Chyba typu je vygenerovaný.

Túto úlohu môžeme v Pythone splniť prostredníctvom preťaženia operátora, ale v prvom rade si uvedomme špeciálne metódy.

Špeciálne magické metódy

Metódy triedy začínajúce sa dvojité podčiarknutie sú v Pythone klasifikované ako špeciálne metódy alebo magické funkcie. Funkcie, ktoré sa používajú na vykonávanie konkrétnych činností. Obvyklé metódy, ktoré pre triedu popisujeme, nie sú takýmito funkciami. Jedným z nich by bol __init_ () funkcia, ktorú sme spomenuli vyššie. Kedykoľvek postavíme nový objekt v tejto triede, volá sa to. Našu triedu prispôsobíme vstavaným funkciám pomocou magických funkcií. V Pythone existuje niekoľko ďalších špeciálnych funkcií.

Binárne alebo matematické operátory

Tu sú podrobnosti o magických funkciách na preťaženie binárnych alebo matematických operátorov pythonu.

Prevádzkovatelia vzťahov alebo porovnávania

Ďalej sú uvedené podrobnosti o magických funkciách na preťaženie porovnávacích alebo relačných operátorov pythonu.

Prevádzkovatelia pridelenia

Tu sú podrobnosti o niektorých magických funkciách na preťaženie operátorov priradenia v kóde python.

Teraz je čas nahliadnuť do niekoľkých vzorových kódov, keď použijeme vyššie spomenuté magické metódy a preťažíme určité operátory.

Preťažte binárne alebo matematické operátory

Príklad 01: Operátor sčítania
Budete musieť presadiť __add_ () metóda v triede na preťaženie + operátor. Veľká povinnosť prichádza s veľkou silou. Vo vnútri tejto metódy môžete robiť všetko, čo chcete. Je však oveľa racionálnejšie vrátiť „Coord ' objekt súradnicového súčtu.

Keď ste vyskúšali c1 + c2, Python v skutočnosti volá svoju mágiu .__add __ () metóda ako c1.__add __ (c2) alebo Coord.__add __ (c1, c2).

Príklad 02: Operátor násobenia
Rovnako môžete pomocou magických funkcií dokonca preťažiť niekoľko binárnych operátorov. V rovnakom príklade vyššie, keď preťažíme operátor násobenia, dostaneme 2, 6 ako naša odpoveď na magickú funkciu.

Príklad 03: Operátor odčítania
Pomocou operátora odčítania sme sa dostali -1, -1 ako naša odpoveď.

Príklad 04: Energetický operátor
Preťažili sme moc operátor pri používaní funkcie mocnej mágie; máme 1, 8.

Príklad 05: Operátor modulu
Preťaženie operátora modulu sme použili __mod__ magická funkcia na získanie modulu.

Môžete tiež použiť ďalšie matematické operátory, napr.g., operátor delenia a delenia podlahy, na preťaženie.

Preťažte porovnávacie operátory

Python neobmedzuje preťaženie operátorov iba na binárne alebo aritmetické operátory. Sme tiež schopní preťažiť operátorov porovnania.

Príklad 01: Menej ako operátor
Predpokladajme, že požadujeme menej ako „<' symbol v našom 'Coord ' triedy, ktorá sa má implementovať. Porovnajme hodnotu týchto argumentov zo zdroja a získajme odpoveď. Ako obvykle sa dá aplikovať. Máme tri objekty a porovnávame ich v tlačených vyhláseniach. Vďaka tomu tento objekt dostaneme c1 je menej než c2, tak to vystupuje Pravdaže. Na druhej strane, c2 a c1vynikajúcejšie než c3; preto obidva falošné výstupy.

Príklad 02: Nerovná sa s operátorom
Teraz preťaženie Nerovná sa (!=) operátor porovnania, dostanete Pravdaže v prípade prvého a druhého tlačového príkazu, pretože spĺňa podmienku, že obidva objekty nie sú rovnaké. Na druhej strane, objekt 1 poskytuje to isté ako objekt 3, čo nespĺňa požiadavku nerovná sa. Preto je výstupom tretie tlačové vyhlásenie Falošné ako výsledok.

Príklad 03: Väčší alebo rovný ako operátor
Vyskúšajme rovnaký príklad preťaženia väčší alebo rovný operátorovi. V prípade prvého tlačeného výpisu máme 2> = 13, ktorý je nepravda; preto dáva False. V druhom a treťom tlačovom vyhlásení sme sa dostali 13> = 2 a 2> = 2, resp. Obidvaja sú Pravdaže pretože spĺňajú podmienku väčšiu alebo rovnú.

Vyskúšajte ďalšie operátory porovnania, napr.g., významnejšia ako, rovná sa, „menšia alebo rovná sa“ aj vo vašom kóde.

Preťažte operátorov priradenia

Zoznámte sa s príkladom preťaženia operátora priradenia. Berieme si podobný príklad s preťažením „- =“ operátor pridelenia. Definovali sme dva objekty s hodnotami súradníc yaz. Prvý objekt c1 odovzdáva svoje hodnoty ja.y ' a ja.z ' premenné, resp. Na druhej strane objekt c2 odovzdáva svoje hodnoty „iné.y ' a „iné.z '.

Objekt c1 má hodnoty ja.y = 1 a ja.z = 1 práve teraz. Objekt c2 hodnoty “iné.y = -2 ' a „iné.z = -3 ' bol odovzdaný do odpočítané z objektu c1 hodnoty. Výsledkom sú výsledky c1 - c2 ja.y - iné.y = 1 - (- 2) a ja.z - iné.z = 1 - (- 3). Vypočítaný výsledok, ktorý je 3 a 4, bol uložený do seba.x 'a' ja.z 'kvôli operátorovi priradenia' =.„Pri tlači tento kód vygeneruje výsledok objektu c1, ktorý má dve premenné ja.y = 3 a ja.z = 4.

Záver

Snažíme sa pokryť všetkých operátorov vo vašom kóde, aby sme lepšie pochopili preťaženie operátora.

Hry Ako používať AutoKey na automatizáciu hier pre Linux
Ako používať AutoKey na automatizáciu hier pre Linux
AutoKey je obslužný program na automatizáciu stolných počítačov pre systémy Linux a X11, programovaný v programoch Python 3, GTK a Qt. Pomocou jeho fu...
Hry Ako zobraziť počítadlo FPS v hrách Linux
Ako zobraziť počítadlo FPS v hrách Linux
Hranie na systéme Linux získalo veľký tlak, keď spoločnosť Valve v roku 2012 oznámila podporu systému Linux pre klienta Steam a ich hry. Od tej doby s...
Hry Ako sťahovať a prehrávať Sid Meier's Civilization VI v systéme Linux
Ako sťahovať a prehrávať Sid Meier's Civilization VI v systéme Linux
Úvod do hry Civilization 6 predstavuje moderné poňatie klasického konceptu predstaveného v sérii hier Age of Empires. Myšlienka bola dosť jednoduchá; ...