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.