Pytonorm

Operatörsöverbelastning i Python

Operatörsöverbelastning i Python
Överbelastning motsvarar tendensen hos en metod eller en operatör att agera på flera sätt i betydelsen av programmering, baserat på de parametrar som tillhandahålls för tekniken eller de operander som operatören arbetar på. Operatörsöverbelastning innebär att långvarig mening ges över deras fördefinierade funktionella betydelse.  Python-operatörer fungerar för inbyggda klasser, men för olika typer fungerar samma operatör annorlunda. Vi får se hur vi kan göra överbelastning av operatörer i Python i den här guiden.

Exempelvis kan + -operatören lägga till två siffror matematiskt, kombinera två listor eller sammanfoga strängar. Här är ett enkelt pythonprogram för att visa en glimt av + -operatören som används för addition och sammanfogning.

Tja, vad kommer om vi använder dessa operatorer för objekt i en användardefinierad klass? Låt oss ta följande program som försöker simulera en plats i 2-D-dimensionen. Nedan kan du redan se att Python inte förstod hur man går med i två koordinatinstanser, a Skrivfel genereras.

Vi kan utföra denna uppgift i Python via operatörens överbelastning, men först och främst, låt oss förstå de speciella metoderna.

Särskilda magiska metoder

Klassmetoder som börjar med dubbel understrykning klassificeras i Python som speciella metoder eller magiska funktioner. Funktionerna som används för att utföra specifika aktiviteter. De vanliga metoderna vi beskriver för en klass är inte sådana funktioner. En av dem skulle vara __i det_() funktion som vi nämnde ovan. Varje gång vi bygger ett nytt objekt i den klassen heter det. Vi kommer att göra våra klasskompatibla till inbyggda funktioner via magiska funktioner. I Python finns det flera andra specialfunktioner.

Binära eller matematiska operatörer

Här är detaljerna i de magiska funktionerna för överbelastning av pythons binära eller matematiska operatorer.

Relations- eller jämförelseoperatörer

Nedan finns detaljerna i de magiska funktionerna för överbelastning av pythonjämförelse eller relationsoperatorer.

Uppdragsoperatörer

Här är detaljerna i några magiska funktioner för överbelastning av tilldelningsoperatörer i pythonkod.

Nu är det dags att skymta några exempelkoder när vi använder de magiska metoderna som nämns ovan och överbelastar vissa operatörer.

Överbelasta binära eller matematiska operatörer

Exempel 01: Tilläggsoperatör
Du måste genomdriva __Lägg till_() metod i klassen för att överbelasta + operatör. Stor plikt anländer med stor styrka. Inuti denna metod kan du göra vad du vill. Men det är mycket mer rationellt att återlämna 'Coord ' objekt för koordinatsumman.

När du försökte c1 + c2 kallar Python faktiskt sin magi .__add __ () metod som c1.__add __ (c2) eller Coord.__add __ (c1, c2).

Exempel 02: Multiplikationsoperatör
På samma sätt kan du till och med överbelasta flera binära operatörer med hjälp av magiska funktioner. I samma exempel ovan får vi medan vi överbelastar multiplikationsoperatören 2, 6 som vårt svar på den magiska funktionen.

Exempel 03: Subtraktionsoperatör
Med subtraktionsoperatören fick vi -1, -1 som vårt svar.

Exempel 04: Eloperatör
Vi överbelastade kraft operatör när du använder Power Magic-funktionen; vi har 1, 8.

Exempel 05: Modulusoperatör
Överbelastning av moduloperatören, vi har använt __mod__ magisk funktion för att få modulen.

Du kan också använda de andra matematiska operatorerna, t.ex.g., division och golvdelningsoperatör, för överbelastning.

Överbelasta jämförelseoperatörerna

Python begränsar inte överbelastningen av operatörer till bara binära eller aritmetiska operatörer. Vi kan också överbelasta jämförelseoperatörer.

Exempel 01: Mindre än operatör
Antag att vi krävde mindre än ''<' symbol i vår 'Coord ' klass som ska genomföras. Låt oss jämföra värdet av dessa argument från källan och ge svaret. Som vanligt kan den appliceras. Vi har tre objekt och vi jämför dem i utskriftsuttalanden. Som ett resultat kommer vi att få det objektet c1 är mindre än c2, så det matar ut Sann. Å andra sidan, c2 och c1 är mer utmärkt än c3; det är därför både Falsk produktion.

Exempel 02: Inte lika med operatören
Nu överbelastar Inte jämnlikt (!=) jämförelseoperatör, får du Sann i fallet med det första och andra tryckuttrycket eftersom det uppfyller villkoret att båda objekten inte är lika. Å andra sidan ger objekt 1 samma som objekt 3, vilket inte uppfyller kravet på Inte lika. Det är därför det tredje utskriftsuttalandet matas ut Falsk som ett resultat.

Exempel 03: Större än eller lika med operatören
Låt oss prova samma exempel för överbelastning av större än eller lika med till operatören. När det gäller det första utskriftsuttalandet har vi 2> = 13, vilket är inte sant; det är därför det ger falskt. I det andra och tredje utskriftsuttalandet fick vi 13> = 2 och 2> = 2, respektive. Båda är Sann eftersom de uppfyller villkoret som är större än eller lika med.

Prova andra jämförelseoperatörer, t.ex.g., mer betydelsefulla än, lika med, 'mindre än eller lika med' i din kod.

Överbelasta uppdragsoperatörerna

Ta en titt på ett exempel på överbelastning av uppdragsoperatörer. Vi tar ett liknande exempel med överbelastningen av '- =' uppdragsoperatör. Vi har definierat två objekt med värdena på y- och z-koordinaterna. Första objektet c1 överför sina värden till 'själv.y ' och 'själv.z ' variabler. Å andra sidan objektet c2 överför sina värden till 'Övrig.y ' och 'Övrig.z '.

Objekt c1 har värden på själv.y = 1 och själv.z = 1 just nu. Objektet c2 värden 'Övrig.y = -2 ' och 'Övrig.z = -3 ' har skickats till subtraheras från objekt c1 värden. Som ett resultat resulterar c1 - c2 själv.y - andra.y = 1 - (- 2) och själv.z - annat.z = 1 - (- 3). Det beräknade resultatet, som är 3 och 4, har sparats i 'jag'.x 'och' själv.z 'på grund av tilldelningsoperatören av' =.'Vid utskrift kommer denna kod att mata ut resultatet av objektet c1, som har två variabler själv.y = 3 och själv.z = 4.

Slutsats

Vi försöker täcka alla operatörer i din kod för en bättre förståelse för operatörsöverbelastning.

Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...
De bästa Oculus App Lab-spelen
Om du är Oculus-headsetägare måste du vara förtjust i sidoladdning. Sideladdning är processen för att installera icke-butiksinnehåll på ditt headset. ...
Topp 10 spel att spela på Ubuntu
Windows-plattformen har varit en av de dominerande plattformarna för spel på grund av den enorma andelen spel som utvecklas idag för att stödja Window...