Operatore sovraccarico in Python

Operatore sovraccarico in Python
Il sovraccarico corrisponde alla tendenza di un metodo o di un operatore ad agire in più modi nel senso di programmazione, in base ai parametri forniti alla tecnica o agli operandi su cui opera l'operatore. Sovraccarico dell'operatore significa che il significato prolungato è dato al di sopra del loro significato funzionale predefinito. Gli operatori di Python funzionano per le classi integrate, ma per vari tipi, lo stesso operatore agisce in modo diverso. Vedremo come potremmo fare un sovraccarico di operatori in Python in questa guida.

Ad esempio, l'operatore + può aggiungere due numeri matematicamente, combinare due elenchi o stringhe concatenate. Ecco un semplice programma Python per mostrare uno sguardo all'operatore + utilizzato per l'aggiunta e la concatenazione.

Bene, cosa succede se usiamo questi operatori per gli oggetti in a definito dall'utente classe? Prendiamo il seguente programma che tenta di simulare un punto nello schema 2-D di dimensioni. Di seguito, puoi già vederlo perché Python non ha capito come aderire a 2 istanze di coordinate, a Digitare l'errore è generato.

Possiamo svolgere questo compito in Python tramite il sovraccarico dell'operatore, ma prima di tutto, comprendiamo i metodi speciali.

Metodi magici speciali

Metodi di classe che iniziano con il Doppio sottolineaggio sono classificati in Python come metodi speciali o funzioni magiche. Le funzioni utilizzate per svolgere attività specifiche. I soliti metodi che descriviamo per una classe non sono tali funzioni. Uno di loro sarebbe il __dentro_() funzione che abbiamo menzionato sopra. Ogni volta che costruiamo un nuovo oggetto in quella classe, si chiama. Reneremo la nostra formazione di classe alle funzioni integrate tramite funzioni magiche. In Python ci sono molte altre funzioni speciali.

Operatori binari o matematici

Ecco i dettagli delle funzioni magiche per sovraccaricare gli operatori binari o matematici di Python.

Operatori relazionali o di confronto

Di seguito sono riportati i dettagli delle funzioni magiche per sovraccaricare il confronto di Python o gli operatori relazionali.

Operatori di assegnazione

Ecco i dettagli di alcune funzioni magiche per sovraccaricare gli operatori di assegnazione nel codice Python.

Ora, è tempo di intravedere un paio di codici di esempio quando usiamo i metodi magici sopra menzionati e sovraccariciamo determinati operatori.

Sovraccaricare gli operatori binari o matematici

Esempio 01: operatore di addizione
Dovrai far rispettare il __aggiungere_() metodo nella classe per sovraccaricare il file + operatore. Il grande dovere arriva con grande forza. All'interno di questo metodo, potresti fare tutto ciò che vuoi. Ma è molto più razionale restituire il 'Coordinarsi " oggetto della somma delle coordinate.

Quando hai provato C1 + C2, Python in realtà chiama la sua magia .__Add __ () Metodo come C1.__add __ (C2) o coord.__add __ (C1, C2).

Esempio 02: operatore di moltiplicazione
Allo stesso modo, puoi persino sovraccaricare diversi operatori binari usando funzioni magiche. Nello stesso esempio sopra, mentre sovraccariciamo l'operatore di moltiplicazione, otteniamo 2, 6 Come la nostra risposta alla funzione magica.

Esempio 03: Operatore di sottrazione
Usando l'operatore di sottrazione, abbiamo ottenuto -1, -1 come la nostra risposta.

Esempio 04: Operatore di alimentazione
Abbiamo sovraccarico il energia operatore durante l'utilizzo della funzione di magia di potenza; noi abbiamo 1, 8.

Esempio 05: Operatore del modulo
Sovraccarico dell'operatore del modulo, abbiamo usato il __Mod__ funzione magica per ottenere il modulo.

Puoi anche usare gli altri operatori matematici, E.G., Operatore di divisione di divisione e pavimento, per il sovraccarico.

Sovraccaricare gli operatori di confronto

Python non limita il sovraccarico di operatori solo agli operatori binari o aritmetici. Siamo anche in grado di sovraccaricare gli operatori di confronto.

Esempio 01: meno dell'operatore
Supponiamo che abbiamo richiesto meno del '<' symbol nel nostro 'Coordinarsi " classe da implementare. Confrontiamo il valore di questi argomenti dalla fonte e cediamo la risposta. Come al solito, può essere applicato. Abbiamo tre oggetti e li stiamo confrontando nelle dichiarazioni di stampa. Di conseguenza, otterremo quell'oggetto C1 È meno di C2, Quindi emette VERO. D'altra parte, C2 E C1 Sono più eccellente di C3; Ecco perché entrambi falsi output.

Esempio 02: non uguale all'operatore
Ora sovraccarico il Non uguale (!=) Operatore di confronto, otterrai VERO Nel caso della prima e della seconda istruzione di stampa perché soddisfa la condizione che entrambi gli oggetti non siano uguali. D'altra parte, l'oggetto 1 produce lo stesso dell'oggetto 3, che non soddisfa il requisito di non uguale. Ecco perché la terza istruzione di stampa emette Falso di conseguenza.

Esempio 03: maggiore o uguale all'operatore
Proviamo lo stesso esempio per sovraccaricare il Maggiore o uguale all'operatore. Nel caso della prima dichiarazione di stampa, abbiamo 2> = 13, che è non vero; Ecco perché produce falso. Nella seconda e terza dichiarazione di stampa, abbiamo ottenuto 13> = 2 E 2> = 2, rispettivamente. Entrambi sono VERO come soddisfano la condizione di maggiore o uguale a.

Prova gli altri operatori di confronto, E.G., più significativo di, uguale a, "meno o uguale a".

Sovraccaricare gli operatori di assegnazione

Dai un'occhiata a un esempio di sovraccarico dell'operatore di assegnazione. Stiamo prendendo un esempio simile con il sovraccarico del '-=' operatore di assegnazione. Abbiamo definito due oggetti con valori di coordinate y e z. Primo oggetto C1 sta passando i suoi valori a 'se stesso.y E 'se stesso.Z ' Variabili, rispettivamente. D'altra parte, l'oggetto C2 sta passando i suoi valori a 'altro.y E 'altro.Z '.

Oggetto C1 ha valori di se stesso.y = 1 E se stesso.z = 1 Proprio adesso. L'oggetto C2 valori 'altro.y = -2 ' E 'altro.z = -3 ' è stato passato a sottratto dall'oggetto C1 valori. Di conseguenza, i risultati C1 - C2 se stesso.y - altro.y = 1-(-2) E se stesso.Z - Altro.z = 1-(-3). Il risultato calcolato, che è 3 e 4, è stato salvato in '.X 'e' Self.z 'a causa dell'operatore di assegnazione di' =.'Sulla stampa, questo codice emetterà il risultato dell'oggetto C1, che ha due variabili se stesso.y = 3 E se stesso.z = 4.

Conclusione

Cerchiamo di coprire tutti gli operatori nel tuo codice per una migliore comprensione del sovraccarico dell'operatore.