Piton

Operátor túlterhelése a Pythonban

Operátor túlterhelése a Pythonban
A túlterhelés annak a tendenciának felel meg, hogy egy módszer vagy egy operátor többféleképpen cselekszik a programozás értelmében, a technika vagy az operandus paramétereinek alapján. A kezelő túlterhelése azt jelenti, hogy az elhúzódó jelentés az előre meghatározott funkcionális jelentőségük felett van megadva.  A Python operátorok beépített osztályoknál működnek, de különféle típusoknál ugyanaz az operátor másképp működik. Ebben az útmutatóban megnézzük, hogyan tehetjük meg az operátorok túlterhelését a Pythonban.

Például a + operátor matematikailag hozzáadhat két számot, két listát kombinálhat, vagy összefűzhet karakterláncokat. Itt van egy egyszerű python program, amely bepillantást enged az összeadáshoz és az összefűzéshez használt + operátorhoz.

Nos, mi történik, ha ezeket az operátorokat objektumokra használjuk a felhasználó által meghatározott osztály? Vegyük a következő programot, amely megpróbál szimulálni egy foltot a dimenziók 2-D sémájában. Az alábbiakban ezt már láthatja, mivel a Python nem értette, hogyan lehet két koordináta példányhoz csatlakozni, a Típus hiba generálódik.

Ezt a feladatot a Pythonban tudjuk végrehajtani az operátor túlterhelésén keresztül, de először is értsük meg a speciális módszereket.

Speciális mágikus módszerek

A kettős aláhúzás speciális módszerekként vagy mágikus funkciókként vannak osztályozva a Pythonban. A meghatározott tevékenységek elvégzéséhez használt funkciók. A szokásos módszerek, amelyeket egy osztályra írunk le, nem ilyen funkciók. Egyikük lenne a __benne_() a fent említett funkciót. Bármikor létrehozunk egy új objektumot ebben az osztályban, az úgynevezett. A varázsfüggvények révén osztályunknak megfelelővé tesszük a beépített funkciókat. A Pythonban számos más speciális funkció létezik.

Bináris vagy matematikai operátorok

Itt vannak a mágiafunkciók részletei a python bináris vagy matematikai operátorok túlterheléséhez.

Relációs vagy összehasonlító operátorok

Az alábbiakban bemutatjuk a mágikus funkciók részleteit a python-összehasonlító vagy relációs operátorok túlterheléséhez.

Feladatkezelők

Itt vannak a varázsfüggvények részletei a hozzárendelési operátorok túlterheléséhez a python kódban.

Itt az ideje megnézni néhány mintakódot, amikor a fent említett mágikus módszereket alkalmazzuk, és bizonyos operátorokat túlterhelünk.

Túlterhelje a bináris vagy matematikai operátorokat

01. példa: Összeadás operátor
Kényszerítenie kell a __add_ () módszer az osztályban a + operátor. Nagy kötelesség érkezik nagy erővel. Ezen a módszeren belül bármit megtehetsz, amit csak akarsz. De sokkal racionálisabb aCoord ' a koordinátaösszeg objektuma.

Amikor megpróbálta a c1 + c2-t, a Python tulajdonképpen annak varázslatát hívja .__add __ () metódus mint c1.__add __ (c2) vagy Coord.__add __ (c1, c2).

02. példa: Szorzási operátor
Hasonlóképpen több bináris operátort is túlterhelhet a mágikus függvények használatával. Ugyanebben a fenti példában, miközben túlterheljük a szorzási operátort, megkapjuk 2, 6 mint a mágikus funkcióra adott válaszunk.

03. példa: Kivonás operátor
A kivonási operátor segítségével megkaptuk -1, -1 mint a válaszunk.

04. példa: Áramszolgáltató
Túlterheltük a erő az operátor a mágia funkció használatakor; kaptunk 1, 8.

05. példa: Modulus operátor
A modulus operátor túlterhelésével a __mod__ varázsfüggvény a modulus megszerzéséhez.

Használhatja a többi matematikai operátort is, pl.g., osztás és padlóosztó kezelő, túlterheléshez.

Túlterheli az összehasonlító operátorokat

A Python nem korlátozza az operátorok túlterhelését csak bináris vagy számtani operátorokra. Túlterhelhetjük az összehasonlító operátorokat is.

01. példa: Kevesebb, mint operátor
Tegyük fel, hogy kevesebbre van szükségünk, mint a "<' symbol miénkben 'Coord ' osztály megvalósítandó. Hasonlítsuk össze ezen érvek értékét a forrásból, és adjuk meg a választ. Szokás szerint alkalmazható. Három tárgyunk van, és ezeket összehasonlítjuk nyomtatott utasításokban. Ennek eredményeként megkapjuk azt az objektumot c1 van Kevésbé mint c2, tehát kimeneti Igaz. Másrészről, c2 és c1 vannak kiválóbb mint c3; ezért mindkét False output.

02. példa: Nem egyenlő a kezelővel
Most túlterheli a Nem egyenlő (!=) összehasonlító operátor, megkapja Igaz az első és a második nyomtatott utasítás esetében, mert megfelel annak a feltételnek, hogy mindkét objektum nem egyenlő. Másrészt az 1. objektum ugyanazt adja, mint a 3. objektum, amely nem felel meg a Nem egyenlő követelménynek. Ezért adja ki a harmadik nyomtatott utasítás Hamis ennek eredményeként.

03. példa: Nagyobb vagy egyenlő a kezelővel
Próbálja ki ugyanezt a példát a nagyobb vagy egyenlő üzemeltetőnek. Az első nyomtatott nyilatkozat esetében megvan 2> = 13, ami nem igaz; ezért ad hamisat. A második és harmadik nyomtatott állításban megkaptuk 13> = 2 és 2> = 2, illetőleg. Mindkettő Igaz mivel kielégítik a nagyobb vagy egyenlő feltételt.

Próbálja ki a többi összehasonlító operátort, pl.g., jelentősebb, mint, egyenlő, „kisebb vagy egyenlő”, a kódodban is.

Töltse le a hozzárendelés operátorait

Vessen egy pillantást a hozzárendelési operátor túlterhelésére. Hasonló példát veszünk a '- =' hozzárendelés operátor. Két objektumot definiáltunk, amelyek értéke y és z koordináta. Első tárgy c1 értékeit adja át 'maga.y ' és 'maga.z ' változók, ill. Másrészt a tárgy c2 értékeit adja át 'Egyéb.y ' és 'Egyéb.z '.

Tárgy c1 értékei vannak maga.y = 1 és maga.z = 1 épp most. A tárgy c2 értékek ”Egyéb.y = -2 ' és 'Egyéb.z = -3 ' átadva kivonva objektumtól c1 értékek. Ennek eredményeként a c1 - c2 eredmények maga.y - egyéb.y = 1 - (- 2) és maga.z - egyéb.z = 1 - (- 3). A kiszámított eredmény, amely 3 és 4, elmentésre került az „én” -be.x 'és' én.z 'a' = hozzárendelési operátor miatt.'Nyomtatáskor ez a kód a c1 objektum eredményét adja ki, amelynek két változója van maga.y = 3 és maga.z = 4.

Következtetés

Az operátorok túlterhelésének jobb megértése érdekében megpróbáljuk lefedni a kód összes operátorát.

Az FPS növelése Linux alatt?
Az FPS jelentése Képkocka másodpercenként. Az FPS feladata a videolejátszások vagy játékteljesítmények képkockasebességének mérése. Egyszerű szavakkal...
A legnépszerűbb Oculus App Lab játékok
Ha Oculus fülhallgató-tulajdonos, akkor tisztában kell lennie az oldalsó töltéssel. Az oldaltöltés a nem áruházi tartalom fejhallgatóra történő telepí...
A legjobb 10 játék az Ubuntuban
A Windows platform a játékok egyik domináns platformja volt, mivel a játékokat hatalmas százalékban fejlesztik ma a natív Windows támogatására. Kihívh...