Python

Operatør Overbelastning i Python

Operatør Overbelastning i Python
Overbelastning svarer til tendensen hos en metode eller en operatør til at handle på flere måder i form af programmering baseret på de parametre, der gives til teknikken eller de operander, som operatøren opererer på. Operatøroverbelastning betyder, at langvarig betydning gives over deres foruddefinerede funktionelle betydning.  Python-operatører fungerer til indbyggede klasser, men for forskellige typer fungerer den samme operatør anderledes. Vi ser, hvordan vi kan udføre overbelastning af operatører i Python i denne vejledning.

For eksempel kan + -operatøren tilføje to tal matematisk, kombinere to lister eller sammenkæde strenge. Her er et simpelt pythonprogram, der viser et glimt af + -operatoren, der bruges til tilføjelse og sammenkædning.

Nå, hvad kommer der, hvis vi bruger disse operatorer til objekter i en brugerdefineret klasse? Lad os tage følgende program, der forsøger at simulere et sted i 2-D-skemaet med dimensioner. Nedenfor kan du allerede se det, fordi Python ikke forstod, hvordan man deltager i 2 koordinatforekomster, a Skriv fejl genereres.

Vi kan udføre denne opgave i Python via operatørens overbelastning, men lad os først og fremmest forstå de specielle metoder.

Særlige magiske metoder

Klassemetoder startende med dobbelt understregning klassificeres i Python som specielle metoder eller magiske funktioner. De funktioner, der bruges til at udføre specifikke aktiviteter. De sædvanlige metoder, vi beskriver for en klasse, er ikke sådanne funktioner. En af dem ville være __i det_() funktion, vi nævnte ovenfor. Hver gang vi bygger et nyt objekt i den klasse, hedder det. Vi vil gengive vores klassekompatible til indbyggede funktioner via magiske funktioner. I Python er der flere andre specielle funktioner.

Binære eller matematiske operatører

Her er detaljerne i de magiske funktioner til overbelastning af python binære eller matematiske operatorer.

Relations- eller sammenligningsoperatører

Nedenfor er detaljerne i de magiske funktioner til overbelastning af pythonsammenligning eller relationsoperatorer.

Opgaveoperatører

Her er detaljerne i nogle magiske funktioner til overbelastning af tildelingsoperatørerne i python-kode.

Nu er det tid til at se et par prøvekoder, når vi bruger de ovennævnte magiske metoder og overbelaster visse operatører.

Overbelast de binære eller matematiske operatører

Eksempel 01: Tilføjelsesoperatør
Du bliver nødt til at håndhæve __tilføje_() metode i klassen for at overbelaste + operatør. Stor pligt ankommer med stor styrke. Inde i denne metode kan du gøre hvad du vil. Men det er meget mere rationelt at returnere 'Coord ' objekt for koordinatsummen.

Når du prøvede c1 + c2, kalder Python faktisk sin magi .__add __ () metode som c1.__add __ (c2) eller Coord.__add __ (c1, c2).

Eksempel 02: Multiplikationsoperatør
På samme måde kan du endda overbelaste flere binære operatører ved hjælp af magiske funktioner. I det samme ovenstående eksempel får vi, mens vi overbelaster multiplikationsoperatoren 2, 6 som vores svar på den magiske funktion.

Eksempel 03: Subtraktionsoperatør
Ved hjælp af subtraktionsoperatøren fik vi -1, -1 som vores svar.

Eksempel 04: Power Operator
Vi overbelastede strøm operatør, mens du bruger Power Magic-funktionen vi fik 1, 8.

Eksempel 05: Modulusoperator
Overbelastning af moduloperatøren, vi har brugt __mod__ magisk funktion for at få modulet.

Du kan også bruge de andre matematiske operatorer, f.eks.g., division og gulvdelingsoperatør til overbelastning.

Overbelast sammenligningsoperatørerne

Python begrænser ikke overbelastning af operatører til kun binære eller aritmetiske operatører. Vi er også i stand til at overbelaste sammenligningsoperatører.

Eksempel 01: Mindre end operatør
Antag, at vi krævede mindre end ''<' symbol i vores 'Coord ' klasse, der skal implementeres. Lad os sammenligne værdien af ​​disse argumenter fra kilden og give svaret. Som sædvanlig kan den anvendes. Vi har tre objekter, og vi sammenligner dem i trykte udsagn. Som et resultat får vi det objekt c1 er mindre end c2, så det output Rigtigt. På den anden side, c2 og c1 er mere fremragende end c3; det er derfor begge falske output.

Eksempel 02: Ikke lig med operatøren
Nu overbelastning af Ikke lige (!=) sammenligningsoperatør, får du Rigtigt i tilfælde af den første og anden udskrift, fordi den opfylder betingelsen om, at begge objekter ikke er ens. På den anden side giver objekt 1 det samme som objekt 3, som ikke opfylder kravet om Ikke lig. Det er grunden til, at den tredje udskriftserklæring udsendes Falsk som resultat.

Eksempel 03: Større end eller lig med operatøren
Lad os prøve det samme eksempel til overbelastning af større end eller lig til operatøren. I tilfælde af den første udskrivningserklæring har vi 2> = 13, som er ikke sandt; det giver derfor Falsk. I det andet og tredje trykte udsagn fik vi 13> = 2 og 2> = 2, henholdsvis. Begge er Rigtigt da de opfylder betingelsen større end eller lig med.

Prøv de andre sammenligningsoperatører, f.eks.g., mere signifikant end, lig med, 'mindre end eller lig med' i din kode også.

Overbelast tildelingsoperatørerne

Se et eksempel på overbelastning af opgaveoperatører. Vi tager et lignende eksempel med overbelastning af '- =' opgaveoperatør. Vi har defineret to objekter med værdier på y- og z-koordinater. Første objekt c1 overfører sine værdier til 'selv.y ' og 'selv.z ' variabler, henholdsvis. På den anden side objektet c2 overfører sine værdier til 'Andet.y ' og 'Andet.z '.

Objekt c1 har værdier på selv.y = 1 og selv.z = 1 lige nu. Objektet c2 værdier 'Andet.y = -2 ' og 'Andet.z = -3 ' er videregivet til trukket fra fra objekt c1 værdier. Som et resultat resulterer c1 - c2 selv.y - andet.y = 1 - (- 2) og selv.z - andet.z = 1 - (- 3). Det beregnede resultat, som er 3 og 4, er blevet gemt i 'selvet.x 'og' selv.z 'på grund af tildelingsoperatøren af' =.'Ved udskrivning udsender denne kode resultatet af objekt c1, som har to variabler selv.y = 3 og selv.z = 4.

Konklusion

Vi forsøger at dække alle operatører i din kode for at få en bedre forståelse af operatøroverbelastning.

Top 5 spiloptagelseskort
Vi har alle set og elsket streaming af gameplay på YouTube. PewDiePie, Jakesepticye og Markiplier er kun nogle af de bedste spillere, der har tjent mi...
Sådan udvikler du et spil på Linux
For et årti siden ville ikke mange Linux-brugere forudsige, at deres foretrukne operativsystem en dag ville være en populær spilplatform til kommercie...
Open Source-porte med kommercielle spilmotorer
Gratis, open source og cross-platform spilmotorgendringer kan bruges til at spille gamle såvel som nogle af de temmelig nylige spiltitler. Denne artik...