Na primer, operater + lahko matematično doda dve številki, združi dva seznama ali združi nize. Tukaj je preprost program python, ki prikazuje vpogled v operater +, ki se uporablja za dodajanje in združevanje.
No, kaj pride, če te operatorje uporabimo za predmete v a uporabnik definiran razred? Vzemimo naslednji program, ki poskuša simulirati točko v 2-D shemi dimenzij. Spodaj to že vidite, ker Python ni razumel, kako združiti 2 primerka koordinat, a Tip Napaka se ustvari.
To nalogo lahko v Pythonu dosežemo s preobremenitvijo operaterja, najprej pa razumimo posebne metode.
Posebne magične metode
Razredne metode, ki se začnejo z dvojno podčrtaj so v Pythonu razvrščeni kot posebne metode ali čarovniške funkcije. Funkcije, ki se uporabljajo za izvajanje določenih dejavnosti. Običajne metode, ki jih opisujemo za razred, niso take funkcije. Eden od njih bi bil __v_() funkcijo, ki smo jo omenili zgoraj. Vsakič, ko v tem razredu zgradimo nov objekt, se imenuje. Vgrajene funkcije bomo s pomočjo čarobnih funkcij naredili združljive s svojim razredom. V Pythonu obstaja še nekaj drugih posebnih funkcij.
Binarni ali matematični operaterji
Tu so podrobnosti o čarobnih funkcijah za preobremenitev bitovih ali matematičnih operaterjev python.
Relacijski ali primerjalni operaterji
Spodaj so podrobnosti o čarobnih funkcijah za preobremenitev primerjalnih ali relacijskih operaterjev python.
Operatorji dodelitve
Tu so podrobnosti nekaterih čarobnih funkcij za preobremenitev operaterjev dodelitve v python kodi.
Zdaj je čas, da si ogledamo nekaj vzorčnih kod, ko uporabimo zgoraj omenjene čarovniške metode in preobremenimo nekatere operaterje.
Preobremenite binarne ali matematične operatorje
Primer 01: Operater seštevanja
Morali boste uveljaviti __add_ () v razredu za preobremenitev + operater. Velika dolžnost prispe z veliko močjo. Znotraj te metode lahko počnete vse, kar želite. Toda veliko bolj smotrno je vrnitiCoord ' predmet koordinatne vsote.
Ko ste poskusili c1 + c2, Python dejansko pokliče svojo čarovnijo .__dodaj __ () kot c1.__dodaj __ (c2) ali Coord.__dodaj __ (c1, c2).
Primer 02: Operator množenja
Prav tako lahko celo z binarnimi funkcijami preobremenite več binarnih operaterjev. V istem zgornjem primeru dobimo med preobremenitvijo operatorja množenja 2, 6 kot naš odgovor na čarobno funkcijo.
Primer 03: Operator odštevanja
Z uporabo operatorja odštevanja smo dobili -1, -1 kot naš odgovor.
Primer 04: Power Operator
Preobremenili smo moč med uporabo funkcije magične moči; imamo 1, 8.
Primer 05: Operater modula
Pri preobremenitvi operaterja modula smo uporabili __mod__ čarobna funkcija za pridobitev modula.
Uporabite lahko tudi druge matematične operatorje, npr.g., upravljalnik pregrade in tal, za preobremenitev.
Preobremenite operaterje primerjave
Python ne omejuje preobremenitve operaterjev le na binarne ali aritmetične operatorje. Preobremenimo lahko tudi operaterje primerjave.
Primer 01: Manj kot operater
Predpostavimo, da smo zahtevali manj kot "<' symbol v našem 'Coord ' razred, ki ga je treba izvesti. Primerjajmo vrednost teh argumentov iz vira in dajmo odgovor. Kot običajno se lahko uporabi. Imamo tri predmete in jih primerjamo v izjavah za tiskanje. Kot rezultat bomo dobili ta predmet c1 je manj kot c2, torej izide Prav. Po drugi strani, c2 in c1 so bolj odlično kot c3; zato oba napačna izhoda.
Primer 02: Ni enako operaterju
Zdaj preobremenitev Ni enako (!=) operater primerjave, boste dobili Prav v primeru prve in druge izjave za tiskanje, ker izpolnjuje pogoj, da oba predmeta nista enaka. Po drugi strani pa objekt 1 daje enako kot objekt 3, ki ne izpolnjuje zahteve Ni enako. Zato izide tretja izjava za tiskanje Lažno kot rezultat.
Primer 03: Večji ali enak operaterju
Poskusimo isti primer za preobremenitev večja ali enaka operaterju. V primeru prve izjave za tisk imamo 2> = 13, kateri je ni res; zato daje False. V drugi in tretji izjavi za tisk smo dobili 13> = 2 in 2> = 2, oz. Oba sta Prav saj izpolnjujejo pogoj, večji ali enak.
Preizkusite druge primerjalne operaterje, npr.g., pomembnejši od, enak, "manjši ali enak" v vaši kodi.
Preobremenite operaterje dodelitve
Oglejte si primer preobremenitve operaterja dodelitve. Podoben primer jemljemo s preobremenitvijo '- =' operater dodelitve. Določili smo dva predmeta z vrednostma y in z koordinatama. Prvi predmet c1 posreduje svoje vrednosti 'jaz.y ' in 'jaz.z ' spremenljivk. Po drugi strani pa objekt c2 posreduje svoje vrednosti 'drugo.y ' in 'drugo.z '.
Predmet c1 ima vrednosti sebe.y = 1 in sebe.z = 1 takoj zdaj. Predmet c2 vrednote 'drugo.y = -2 ' in 'drugo.z = -3 ' je bilo preneseno na odšteti od predmeta c1 vrednote. Posledično je rezultat c1 - c2 sebe.y - drugo.y = 1 - (- 2) in sebe.z - drugo.z = 1 - (- 3). Izračunani rezultat, ki je 3 in 4, je bil shranjen v "self".x 'in' self.z 'zaradi operaterja dodelitve' =.'Ob tiskanju bo ta koda prikazala rezultat predmeta c1, ki ima dve spremenljivki sebe.y = 3 in sebe.z = 4.
Zaključek
V vaši kodi poskušamo zajeti vse operaterje za boljše razumevanje preobremenitve operaterja.