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.