Metodi Python Magic sono i metodi che iniziano e finiscono con il doppio carattere di sottolineatura '__'. Sono definiti da classi integrate in Python e comunemente utilizzati per l'overload degli operatori.
Sono anche chiamati Metodi Dunder, Dunder qui significa Double Under (underscore).
Metodi magici di Python
Le classi integrate definiscono molti metodi magici, Voi() la funzione può mostrarti metodi magici ereditati da una classe.
Esempio:
Questo codice mostra i metodi magici ereditati da int classe.
Python3
# code> print>(>dir>(>int>))> |
>
>Produzione
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '_...>
Oppure puoi provare cmd/terminal per ottenere l'elenco delle funzioni magiche in Python, aprire cmd o terminale, digitare python3 per andare alla console Python e digitare:
>>> say(int)>
Produzione:

Metodi magici di Python
Di seguito sono riportati gli elenchi dei metodi magici di Python e i loro usi.
Inizializzazione e costruzione
- __nuovo__ : Per essere chiamato nell'istanziazione di un oggetto.
- __caldo__ : Per essere chiamato con il metodo __new__.
- __del__ : È il distruttore.
Metodi magici numerici
convertire la stringa in json in Java
- __tronco__ (se stesso): Implementa il comportamento per math.trunc()
- __ceil__ (se stesso): Implementa il comportamento per math.ceil()
- __pavimento__ (se stesso): Implementa il comportamento per math.floor()
- __girare__ (sé,n): Implementa il comportamento per il round integrato()
- __inverti__(se stesso): Implementa il comportamento per l'inversione utilizzando l'operatore ~.
- __addominali__(se stesso): Implementa il comportamento per l'abs() integrato
- __neg__(se stesso): Implementa il comportamento per la negazione
- __pos__(se stesso): Implementa il comportamento per il positivo unario
Operatori aritmetici
- __aggiungere__ (sé, altro): Implementa il comportamento per math.trunc()
- __sub__(sé, altro): Implementa il comportamento per math.ceil()
- __Io ho__ (sé, altro): Implementa il comportamento per math.floor()
- __floordiv__ (sé, altro): Implementa il comportamento per il round integrato()
- __div__(sé, altro): Implementa il comportamento per l'inversione utilizzando l'operatore ~.
- __truediv__(sé, altro): Implementa il comportamento per l'abs() integrato
- __mod__(sé, altro): Implementa il comportamento per la negazione
- __divmod__(sé, altro): Implementa il comportamento per il positivo unario
- __pow__: Implementa il comportamento per gli esponenti che utilizzano l'operatore **.
- __lshift__(sé, altro): Implementa lo spostamento bit a sinistra utilizzando l'operatore <<.
- __rshift__(sé, altro): Implementa lo spostamento bit a destra utilizzando l'operatore>>.
- __e__(sé, altro): Implementa bit per bit e utilizzando l'operatore &.
- __o__(sé, altro): Implementa bit per bit o utilizzando | operatore.
- __xor__(sé, altro): Implementa xor bit per bit utilizzando l'operatore ^.
Metodi di magia delle corde
- __str__ (se stesso): Definisce il comportamento per quando str() viene chiamato su un'istanza della tua classe.
- __repr_ _(se stesso): T o viene chiamato dal metodo built-int repr() per restituire una rappresentazione leggibile dalla macchina di un tipo.
- __unicode__(se stesso): Questo metodo per restituire una stringa Unicode di un tipo.
- __format__(self, formatstr): restituisce un nuovo stile di stringa.
- __hash_ _(se stesso): Deve restituire un numero intero e il suo risultato viene utilizzato per un rapido confronto dei tasti nei dizionari.
- __nonzero__(se stesso): Definisce il comportamento per quando bool() viene chiamato su un'istanza della classe.
- __Voi_ _(se stesso): Questo metodo restituisce un elenco di attributi di una classe.
- __taglia di__( se stesso): Restituisce la dimensione dell'oggetto.
Metodi magici di confronto
- __eq__ (sé, altro): Definisce il comportamento per l'operatore di uguaglianza, ==.
- __ne__(sé, altro): Definisce il comportamento per l'operatore di disuguaglianza, !=.
- __lt__ (sé, altro): Definisce il comportamento per l'operatore minore di, <.
- __gt__ (sé, altro): Definisce il comportamento per l'operatore maggiore di,>.
- __le__(sé, altro): Definisce il comportamento dell'operatore minore o uguale a, <=.
- __ge__ (sé, altro): Definisce il comportamento dell'operatore maggiore o uguale a,>=.
Metodi Dunder o Magic in Python
Vediamo alcuni dei metodi magici di Python con esempi:
1. Metodo __init__
IL metodo __init__ per l'inizializzazione viene invocato senza alcuna chiamata, quando viene creata un'istanza di una classe, come i costruttori in alcuni altri linguaggi di programmazione come C++, Java, C#, PHP, ecc.
Questi metodi sono il motivo per cui possiamo aggiungere due stringhe con l'operatore '+' senza alcuna conversione di tipo esplicita.
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
>
>Produzione
>
2. Metodo __repr__
__repr__ Il metodo in Python definisce come un oggetto viene presentato come una stringa.
Il frammento di codice seguente stampa solo l'indirizzo di memoria dell'oggetto stringa. Aggiungiamo un metodo __repr__ per rappresentare il nostro oggetto.
Python3
scarica autocad 2019 inglese mediafire
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># print object location> >print>(string1)> |
>
>Produzione
Object: Hello>
Se proviamo ad aggiungere una stringa ad esso:
Python3
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' world'>)> |
>
>
Produzione:
TypeError : unsupported operand type(s) for +: 'String' and 'str'>
3. Metodo __aggiungi__
metodo __aggiungi__ in Python definisce come saranno sommati gli oggetti di una classe. È noto anche come operatore di addizione sovraccaricato.
Ora aggiungi il metodo __add__ alla classe String:
Pitone
# declare our own string class> class> String:> > ># magic method to initiate object> >def> __init__(>self>, string):> >self>.string>=> string> > ># print our string object> >def> __repr__(>self>):> >return> 'Object: {}'>.>format>(>self>.string)> > >def> __add__(>self>, other):> >return> self>.string>+> other> > # Driver Code> if> __name__>=>=> '__main__'>:> > ># object creation> >string1>=> String(>'Hello'>)> > ># concatenate String object and a string> >print>(string1>+>' Geeks'>)> |
Java legge CSV
>
>Produzione
Hello Geeks>
Abbiamo discusso alcuni dei metodi magici di Python o metodi Dunder. I metodi magici in Python possono essere utilizzati per diverse funzionalità nella tua classe.
Spero che tu imparerai i metodi magici di Python da questo articolo e li utilizzerai nei tuoi progetti.