Python

Operatøroverbelastning i Python

Operatøroverbelastning i Python
Overbelastning tilsvarer tendensen til en metode eller en operatør til å handle på flere måter i form av programmering, basert på parametrene gitt til teknikken eller operandene som operatøren opererer på. Operatøroverbelastning betyr at langvarig mening blir gitt over deres forhåndsdefinerte funksjonelle betydning.  Python-operatører fungerer for innebygde klasser, men for forskjellige typer fungerer den samme operatøren annerledes. Vi får se hvordan vi kan gjøre overbelastning av operatører i Python i denne guiden.

For eksempel kan + -operatøren legge til to tall matematisk, kombinere to lister eller sammenkoble strenger. Her er et enkelt pythonprogram for å vise et glimt av + -operatøren som brukes til tillegg og sammenkobling.

Vel, hva kommer hvis vi bruker disse operatorene til objekter i en brukerdefinert klasse? La oss ta følgende program som prøver å simulere et sted i 2-D-skjemaet for dimensjoner. Nedenfor kan du allerede se at fordi Python ikke forsto hvordan man skulle bli med i to koordinatforekomster, a Skriv feil genereres.

Vi kan utføre denne oppgaven i Python via overbelastning av operatøren, men først og fremst, la oss forstå de spesielle metodene.

Spesielle magiske metoder

Klassemetoder som starter med dobbelt understreking klassifiseres i Python som spesielle metoder eller magiske funksjoner. Funksjonene som brukes til å utføre spesifikke aktiviteter. De vanlige metodene vi beskriver for en klasse er ikke slike funksjoner. En av dem ville være __i det_() funksjon vi nevnte ovenfor. Hver gang vi bygger et nytt objekt i den klassen, heter det. Vi vil gjengi våre klassekompatible til innebygde funksjoner via magiske funksjoner. I Python er det flere andre spesialfunksjoner.

Binære eller matematiske operatører

Her er detaljene i de magiske funksjonene for overbelastning av python binære eller matematiske operatører.

Relasjons- eller sammenligningsoperatører

Nedenfor er detaljene i de magiske funksjonene for overbelastning av pythonsammenligning eller relasjonsoperatører.

Oppdragsoperatører

Her er detaljene i noen magiske funksjoner for overbelastning av oppdragsoperatørene i python-kode.

Nå er det på tide å se et par eksempler på koder når vi bruker de magiske metodene som er nevnt ovenfor og overbelaster visse operatører.

Overbelaste binære eller matematiske operatører

Eksempel 01: Tilleggsoperatør
Du må håndheve __legge til_() metoden i klassen for å overbelaste + operatør. Stor plikt kommer med stor styrke. Inne i denne metoden kan du gjøre hva du vil. Men det er mye mer rasjonelt å returnere 'Coord ' objekt for koordinatsummen.

Når du prøvde c1 + c2, kaller Python faktisk magien .__add __ () metode som c1.__add __ (c2) eller Coord.__add __ (c1, c2).

Eksempel 02: Multiplikasjonsoperatør
På samme måte kan du til og med overbelaste flere binære operatører ved hjelp av magiske funksjoner. I det samme eksemplet ovenfor, mens vi overbelaster multiplikasjonsoperatøren, får vi 2, 6 som vårt svar på den magiske funksjonen.

Eksempel 03: Subtraksjonsoperatør
Ved hjelp av subtraksjonsoperatøren fikk vi -1, -1 som vårt svar.

Eksempel 04: Kraftoperatør
Vi overbelastet makt operatør mens du bruker Power Magic-funksjonen; vi fikk 1, 8.

Eksempel 05: Moduloperatør
Overbelastning av moduloperatøren, vi har brukt __mod__ magisk funksjon for å få modulus.

Du kan også bruke de andre matematiske operatorene, f.eks.g., divisjon og gulvdelingsoperatør, for overbelastning.

Overbelast sammenligningsoperatørene

Python begrenser ikke overbelastning av operatører til bare binære eller aritmetiske operatører. Vi er også i stand til å overbelaste sammenligningsoperatører.

Eksempel 01: Mindre enn operatør
Anta at vi krevde mindre enn '<' symbol i vår 'Coord ' klasse som skal implementeres. La oss sammenligne verdien av disse argumentene fra kilden og gi svaret. Som vanlig kan den påføres. Vi har tre objekter, og vi sammenligner dem i utskriftsuttalelser. Som et resultat vil vi få det objektet c1 er mindre enn c2, så det gir utgang ekte. På den andre siden, c2 og c1 er mer utmerket enn c3; det er derfor begge falske utdata.

Eksempel 02: Ikke lik operatøren
Nå overbelaster Ikke lik (!=) sammenligningsoperatør, vil du få ekte når det gjelder første og andre utskrift, fordi den tilfredsstiller vilkåret om at begge objektene ikke er like. På den annen side gir objekt 1 det samme som objekt 3, som ikke oppfyller kravet om Ikke lik. Det er derfor den tredje utskriftsuttalelsen kommer ut Falsk som et resultat.

Eksempel 03: Større enn eller lik operatør
La oss prøve det samme eksemplet for overbelastning av større enn eller lik til operatøren. I tilfelle av den første utskriftsuttalelsen, har vi 2> = 13, som er ikke sant; det er derfor det gir falskt. I det andre og tredje utskriftsuttalelsen fikk vi 13> = 2 og 2> = 2, henholdsvis. Begge er ekte ettersom de tilfredsstiller tilstanden som er større enn eller lik.

Prøv de andre sammenligningsoperatørene, f.eks.g., mer signifikant enn, lik, 'mindre enn eller lik' i koden din også.

Overbelast oppdragsoperatørene

Se på et eksempel på overbelastning av oppdragsoperatører. Vi tar et lignende eksempel med overbelastning av '- =' oppdragsoperatør. Vi har definert to objekter med verdier på y- og z-koordinater. Første objekt c1 overfører verdiene til 'selv.y ' og 'selv.z ' variabler, henholdsvis. På den annen side objektet c2 overfører verdiene til 'annen.y ' og 'annen.z '.

Gjenstand c1 har verdier av selv-.y = 1 og selv-.z = 1 akkurat nå. Objektet c2 verdier 'annen.y = -2 ' og 'annen.z = -3 ' har blitt overført til trukket fra objektet c1 verdier. Som et resultat, resulterer c1 - c2 selv-.y - annet.y = 1 - (- 2) og selv-.z - annet.z = 1 - (- 3). Det beregnede resultatet, som er 3 og 4, er lagret i 'selvet.x 'og' selv.z 'på grunn av tildelingsoperatøren av' =.'På utskrift vil denne koden levere resultatet av objektet c1, som har to variabler selv-.y = 3 og selv-.z = 4.

Konklusjon

Vi prøver å dekke alle operatørene i koden din for å få en bedre forståelse av operatøroverbelastning.

Slik installerer du League Of Legends på Ubuntu 14.04
Hvis du er fan av League of Legends, er dette en mulighet for deg å prøvekjør League of Legends. Merk at LOL støttes på PlayOnLinux hvis du er en linu...
Installer det siste OpenRA-strategispillet på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spillmotor som gjenskaper de tidlige Westwood-spillene som den klassiske Command & Conquer: Red Alert. Di...
Installer nyeste Dolphin Emulator for Gamecube & Wii på Linux
Dolphin Emulator lar deg spille de valgte Gamecube- og Wii-spillene dine på Linux Personal Computers (PC). Som en fritt tilgjengelig og åpen kildekod...