Pitone

Sovraccarico degli operatori in Python

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

Ad esempio, l'operatore + può aggiungere matematicamente due numeri, combinare due elenchi o concatenare stringhe. Ecco un semplice programma Python per mostrare un assaggio dell'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 di dimensioni 2-D. Di seguito, puoi già vederlo perché Python non ha capito come unire 2 istanze di coordinate, a Errore di tipo è generato.

Possiamo svolgere questo compito in Python tramite l'overloading dell'operatore, ma prima di tutto, capiamo i metodi speciali.

Metodi Magici Speciali

Metodi di classe che iniziano con doppia sottolineatura sono classificati in Python come metodi speciali o funzioni magiche. Le funzioni che vengono utilizzate per svolgere attività specifiche. I soliti metodi che descriviamo per una classe non sono tali funzioni. Uno di questi sarebbe il __dentro_() funzione che abbiamo menzionato sopra. Ogni volta che costruiamo un nuovo oggetto in quella classe, viene chiamato. Renderemo la nostra classe conforme 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 Python.

Operatori relazionali o di confronto

Di seguito sono riportati i dettagli delle funzioni magiche per sovraccaricare il confronto 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 è il momento di dare un'occhiata a un paio di codici di esempio quando usiamo i metodi magici sopra menzionati e sovraccaricano alcuni operatori.

Sovraccaricare gli operatori binari o matematici

Esempio 01: Operatore di addizione
Dovrai far rispettare il __Inserisci_() metodo nella classe per sovraccaricare il + operatore. Il grande dovere arriva con grande forza. All'interno di questo metodo, puoi fare tutto ciò che vuoi. Ma è molto più razionale restituire il 'Coordina' oggetto della somma coordinata.

Quando hai provato c1 + c2, Python chiama effettivamente la sua magia .Metodo __add__() come c1.__add__(c2) o Coord.__aggiungi__(c1,c2).

Esempio 02: Operatore di moltiplicazione
Allo stesso modo, puoi persino sovraccaricare diversi operatori binari usando le funzioni magiche. Nello stesso esempio precedente, sovraccaricando 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 -1, -1 come nostra risposta.

Esempio 04: Operatore elettrico
Abbiamo sovraccaricato il energia operatore durante l'utilizzo della funzione Power Magic; noi abbiamo 1, 8.

Esempio 05: Operatore Modulo
Sovraccaricando l'operatore modulo, abbiamo usato il __mod__ funzione magica per ottenere il modulo.

Puoi anche usare gli altri operatori matematici, e.g., operatore di divisione e divisione di piano, per sovraccarico.

Sovraccaricare gli operatori di confronto

Python non limita il sovraccarico degli operatori ai soli operatori binari o aritmetici. Siamo anche in grado di sovraccaricare gli operatori di confronto.

Esempio 01: Minore di Operatore
Supponiamo di aver richiesto meno di '<' symbol nel nostro 'Coordina' classe da implementare. Confrontiamo il valore di questi argomenti dalla fonte e diamo la risposta. Come al solito, può essere applicato. Abbiamo tre oggetti e li stiamo confrontando nelle istruzioni di stampa. Di conseguenza, otterremo quell'oggetto c1 è Di meno di c2, quindi esce Vero. D'altro canto, c2 e c1 siamo più eccellente di c3; ecco perché entrambi False output.

Esempio 02: Diverso da Operatore
Ora sovraccaricare il Non uguale (!=) operatore di confronto, otterrai Vero nel caso della prima e della seconda istruzione print 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. Questo è il motivo per cui viene emessa la terza istruzione di stampa falso di conseguenza.

Esempio 03: Maggiore di o uguale a Operatore
Proviamo lo stesso esempio per sovraccaricare il Maggiore o uguale all'operatore. Nel caso della prima istruzione print, abbiamo 2 >= 13, che è non vero; ecco perché produce False. Nella seconda e terza dichiarazione di stampa, abbiamo ottenuto 13>=2 e 2>=2, rispettivamente. Entrambi sono Vero in quanto soddisfano la condizione di maggiore o uguale a.

Prova gli altri operatori di confronto, e.g., più significativo di, uguale a, 'minore o uguale a' anche nel tuo codice code.

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 aventi 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 da oggetto c1 valori. Di conseguenza, 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 "self".x' e 'auto.z' a causa dell'operatore di assegnazione di '=.' In stampa, questo codice restituirà 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 degli operatori.

I migliori giochi da giocare con il tracciamento delle mani
Oculus Quest ha recentemente introdotto la grande idea del tracciamento manuale senza controller. Con un numero sempre crescente di giochi e attività ...
Come mostrare l'overlay OSD in app e giochi Linux a schermo intero
Giocare a giochi a schermo intero o utilizzare app in modalità a schermo intero senza distrazioni può tagliarti fuori dalle informazioni di sistema ri...
Le 5 migliori carte di acquisizione del gioco
Abbiamo tutti visto e amato i giochi in streaming su YouTube. PewDiePie, Jakesepticye e Markiplier sono solo alcuni dei migliori giocatori che hanno g...