Krajta

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

Přetížení operátora v Pythonu
Přetížení odpovídá tendenci metody nebo operátora jednat více způsoby ve smyslu programování na základě parametrů poskytovaných technice nebo operandům, na nichž operátor pracuje. Přetížení operátora znamená, že nad jejich předdefinovaný funkční význam je dán prodloužený význam.  Operátoři Pythonu fungují pro integrované třídy, ale pro různé typy funguje stejný operátor jinak. Uvidíme, jak bychom mohli v této příručce udělat přetížení operátora v Pythonu.

Například operátor + může matematicky přidat dvě čísla, kombinovat dva seznamy nebo zřetězit řetězce. Zde je jednoduchý program v pythonu, který ukazuje letmý pohled na operátor + použitý pro sčítání a zřetězení.

Co přijde, když použijeme tyto operátory pro objekty v a definované uživatelem třída? Vezměme si následující program, který se pokusí simulovat bod ve 2D schématu rozměrů. Níže to již vidíte, protože Python nerozuměl tomu, jak se připojit ke 2 instancím souřadnic, a Chyba typu je generován.

Můžeme provést tento úkol v Pythonu přes přetížení operátora, ale nejprve pochopíme speciální metody.

Speciální magické metody

Třída metody začínající dvojité podtržítko jsou v Pythonu klasifikovány jako speciální metody nebo magické funkce. Funkce, které se používají k provádění konkrétních činností. Obvyklé metody, které pro třídu popisujeme, nejsou takovými funkcemi. Jedním z nich by byl __init_ () funkce, kterou jsme zmínili výše. Kdykoli postavíme nový objekt v této třídě, volá se to. Prostřednictvím magických funkcí vykreslíme naši třídu kompatibilní s vestavěnými funkcemi. V Pythonu existuje několik dalších speciálních funkcí.

Binární nebo matematické operátory

Tady jsou podrobnosti o magických funkcích pro přetížení binárních nebo matematických operátorů pythonu.

Relační nebo srovnávací operátoři

Níže jsou uvedeny podrobnosti o magických funkcích pro přetížení porovnávacích nebo relačních operátorů pythonu.

Operátoři přiřazení

Tady jsou podrobnosti o některých magických funkcích pro přetížení operátorů přiřazení v kódu pythonu.

Nyní je čas zahlédnout pár ukázkových kódů, když použijeme výše uvedené magické metody a přetížíme určité operátory.

Přetížit binární nebo matematické operátory

Příklad 01: Operátor přidání
Budete muset vymáhat __přidat_() metoda ve třídě k přetížení + operátor. Velká povinnost přichází s velkou silou. Uvnitř této metody můžete dělat, co chcete. Je však mnohem racionálnější vrátit 'Coord ' objekt souřadnicového součtu.

Když jste zkusili c1 + c2, Python vlastně nazývá svou magii .__add __ () metoda jako c1.__add __ (c2) nebo Coord.__add __ (c1, c2).

Příklad 02: Operátor násobení
Podobně můžete pomocí magických funkcí dokonce přetížit několik binárních operátorů. Ve stejném příkladu výše, při přetížení operátoru násobení, dostaneme 2, 6 jako naše odpověď na magickou funkci.

Příklad 03: Operátor odčítání
Pomocí operátoru odčítání jsme dostali -1, -1 jako naše odpověď.

Příklad 04: Energetický operátor
Přetížili jsme Napájení operátor při používání funkce power magic; máme 1, 8.

Příklad 05: Operátor modulu
Přetížení operátora modulu jsme použili __mod__ magická funkce pro získání modulu.

Můžete také použít jiné matematické operátory, např.G., operátor dělení a dělení podlahy, pro přetížení.

Přetížit operátory porovnání

Python neomezuje přetížení operátorů pouze na binární nebo aritmetické operátory. Jsme také schopni přetížit operátory porovnání.

Příklad 01: Méně než operátor
Předpokládejme, že požadujeme méně než ''<' symbol v našem 'Coord ' třída, která má být implementována. Porovnejme hodnotu těchto argumentů ze zdroje a získáme odpověď. Jako obvykle lze použít. Máme tři objekty a porovnáváme je v tiskových prohlášeních. Ve výsledku tento objekt dostaneme c1 je méně než c2, takže výstupy Skutečný. Na druhou stranu, c2 a c1 jsou vynikající než c3; proto oba falešné výstupy.

Příklad 02: Nerovná se operátorovi
Nyní přetížení Nerovná se (!=) operátor porovnání, dostanete Skutečný v případě prvního a druhého tiskového příkazu, protože splňuje podmínku, že oba objekty nejsou stejné. Na druhé straně objekt 1 poskytuje stejné výsledky jako objekt 3, který nesplňuje požadavek nerovná se. Proto jsou výstupy třetího tiskového prohlášení Nepravdivé jako výsledek.

Příklad 03: Větší než nebo rovné operátorovi
Zkusme stejný příklad přetížení větší nebo rovno operátorovi. V případě prvního tiskového prohlášení máme 2> = 13, který je není pravda; proto dává False. Ve druhém a třetím tiskovém prohlášení jsme se dostali 13> = 2 a 2> = 2, resp. Oba jsou Skutečný protože splňují podmínku větší než nebo rovno.

Zkuste další operátory porovnání, např.G., významnější než, rovno, 'menší než nebo rovno', také v kódu.

Přetížit operátory přiřazení

Podívejte se na příklad přetížení operátoru přiřazení. Bereme podobný příklad s přetížením '- =' operátor přiřazení. Definovali jsme dva objekty s hodnotami souřadnic y a z. První objekt c1 předává své hodnoty 'já.y ' a 'já.z ' proměnné. Na druhou stranu objekt c2 předává své hodnoty 'jiný.y ' a 'jiný.z '.

Objekt c1 má hodnoty já.y = 1 a já.z = 1 právě teď. Objekt c2 hodnoty 'jiný.y = -2 ' a 'jiný.z = -3 ' bylo předáno odečteno z objektu c1 hodnoty. Výsledkem jsou výsledky c1 - c2 já.y - ostatní.y = 1 - (- 2) a já.z - ostatní.z = 1 - (- 3). Vypočítaný výsledek, který je 3 a 4, byl uložen do sebe.x 'a' já.z 'kvůli operátorovi přiřazení' =.„Při tisku tento kód vygeneruje výsledek objektu c1, který má dvě proměnné já.y = 3 a já.z = 4.

Závěr

Snažíme se ve vašem kódu pokrýt všechny operátory, abychom lépe porozuměli přetížení operátorů.

Hry HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
HD remasterované hry pro Linux, které nikdy dříve neměly vydání Linuxu
Mnoho vývojářů a vydavatelů her přichází s HD remasterem starých her, aby prodloužili životnost franšízy, prosím fanoušky, kteří požadují kompatibilit...
Hry Jak používat AutoKey k automatizaci linuxových her
Jak používat AutoKey k automatizaci linuxových her
AutoKey je nástroj pro automatizaci stolních počítačů pro systémy Linux a X11, programovaný v programech Python 3, GTK a Qt. Pomocí jeho funkcí skript...
Hry Jak zobrazit počítadlo FPS v linuxových hrách
Jak zobrazit počítadlo FPS v linuxových hrách
Hraní na Linuxu získalo velký tlak, když společnost Valve v roce 2012 oznámila podporu systému Linux pro klienta Steam a jejich hry. Od té doby se mno...