For eksempel kan + -operatøren legge til to tall matematisk, kombinere to lister, eller sammenkoblingsstrenger. Her er et enkelt Python -program for å vise et glimt av + -operatøren som brukes til tillegg og sammenkobling.
Vel, hva kommer hvis vi bruker disse operatørene til objekter i en brukerdefinert klasse? La oss ta følgende program som prøver å simulere et sted i 2-D-dimensjonsordningen. Nedenfor kan du allerede se at fordi Python ikke forsto hvordan du kan bli med i 2 koordinater forekomster, a Type 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 understrek 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 gjøre vår klassekompatible med innebygde funksjoner via magiske funksjoner. I Python er det flere andre spesielle funksjoner.
Binære eller matematiske operatører
Her er detaljene om de magiske funksjonene for overbelastning av Python Binary eller Mathematical Operators.
Relasjons- eller sammenligningsoperatører
Nedenfor er detaljene om de magiske funksjonene for å overbelaste Python -sammenligningen eller relasjonelle operatører.
Oppdragsoperatører
Her er detaljene om noen magiske funksjoner for overbelastning av oppdragsoperatørene i Python -kode.
Nå er det på tide å skimte et par prøvekoder når vi bruker de magiske metodene som er nevnt ovenfor og overbelaster visse operatører.
Overbelaste de binære eller matematiske operatørene
Eksempel 01: tilleggsoperatør
Du må håndheve __Legg til_() metode i klassen for å overbelaste + operatør. Stor plikt ankommer med stor styrke. Inne i denne metoden kan du gjøre hva du vil. Men det er mye mer rasjonelt å returnere 'Koord ' objekt med koordinatsummen.
Da du prøvde C1 + C2, kaller Python faktisk sin magi .__add __ () -metode som C1.__add __ (c2) eller koord.__add __ (C1, C2).
Eksempel 02: Multiplikasjonsoperatør
På samme måte kan du til og med overbelaste flere binære operatører som bruker 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: Strømoperatør
Vi overbelastet makt operatør mens du bruker Power Magic -funksjonen; vi fikk 1, 8.
Eksempel 05: Modulusoperatør
Overbelastning av modulusoperatøren, vi har brukt __mod__ Magisk funksjon for å få modulen.
Du kan også bruke de andre matematiske operatørene, e.g., divisjons- og gulvdivisjonsoperatør, for overbelastning.
Overbelaste sammenligningsoperatørene
Python begrenser ikke overbelastningen 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 'Koord ' Klasse som skal implementeres. La oss sammenligne verdien av disse argumentene fra kilden og gi svaret. Som vanlig kan det brukes. 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 ut ekte. På den andre siden, C2 og C1 er mer utmerket enn C3; det er grunnen til at begge falske output.
Eksempel 02: Ikke lik operatøren
Nå overbelastet Ikke lik (!=) Sammenligningsoperatør, du vil få ekte i tilfelle av den første og andre utskriftserklæringen fordi den tilfredsstiller betingelsen 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 grunnen til at den tredje utskriftserklæringen utgjør Falsk som et resultat.
Eksempel 03: større enn eller lik operatøren
La oss prøve det samme eksemplet for å overbelaste større enn eller lik til operatør. Når det gjelder den første utskriftserklæringen, har vi det 2> = 13, som er ikke sant; det er derfor det gir usant. I andre og tredje utskriftsuttalelser fikk vi 13> = 2 og 2> = 2, henholdsvis. Begge er ekte som de tilfredsstiller tilstanden til større enn eller tilsvarer.
Prøv den andre sammenligningsoperatørene, e.g., mer viktig enn, lik, 'mindre enn eller lik' i koden din også.
Overbelaste oppdragsoperatørene
Ta en titt på et eksempel på overbelastning av tildelingsoperatøren. Vi tar et lignende eksempel med overbelastning av '-=' Oppdragsoperatør. Vi har definert to objekter som har verdier av Y- og Z -koordinater. Første objekt C1 overfører verdiene sine til 'selv.y ' og 'selv.z ' variabler henholdsvis. På den annen side, objektet C2 overfører verdiene sine 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 sendt til trukket fra fra objekt 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, har blitt frelst i selv.x 'og' selv.z 'på grunn av tildelingsoperatøren av' =.'På utskrift vil denne koden sende ut resultatet av objekt C1, som har to variabler selv-.y = 3 og selv-.z = 4.
Konklusjon
Vi prøver å dekke alle operatørene i koden din for en bedre forståelse av overbelastning av operatøren.