I metodi speciali di Python

Nelle classi del linguaggio python si possono usare anche dei metodi speciali. Sono detti "speciali" perché hanno una sintassi specifica e svolgono funzioni predefinite dell'interprete.

La sintassi

I nomi dei metodi speciali iniziano e terminano con il doppio carattere underscore ( _ )

__metodospeciale__

I metodi speciali sono gli stessi usati dall'interprete per elaborare un'istruzione.

Alcuni metodi speciali nativi svolgono funzioni predefinite molto utili nella programmazione a oggetti di python.

Nota. I metodi speciali di python sono anche detti dunder per la presenza del doppio trattino in basso ( double underscore ).

A cosa servono i metodi speciali

Quando in una classe si implementa un metodo speciale, la classe emula un operatore del linguaggio.

Questo approccio è detto overloading dell'operatore.

Esempio

Creo una semplice lista composta da tre elementi.

>>> oggetto=['a','b','c']

Per leggere il terzo elemento della lista mi basta digitare

>>> oggetto[2]
'c'

Posso ottenere lo stesso risultato tramite il metodo speciale __getitem__

>>> oggetto.__getitem__(2)
'c'

E' ovviamente soltanto un semplice esempio, quasi banale. Non bisogna però sottovalutare l'overloading.

Nella programmazione a oggetti di python le potenzialità dell'overloading sono enormi ...per chi le conosce e le sa usare.

Lista dei metodi speciali

Ecco una lista di metodi speciali

  • __init__ inizializza un oggetto della classe ( metodo costruttore )
  • __str__ converte un oggetto in una stringa
  • __del__ distrugge la classe ( metodo distruttore )
  • __eq__ verifica se un valore è uguale a un altro
  • __gt__ verifica se un valore è maggiore di un altro
  • __ge__ verifica se un valore è maggiore o uguale a un altro
  • __lt__ verifica se un valore è minore di un altro
  • __le__ verifica se un valore è minore o uguale a un altro
  • __call__ utilizza un oggetto come una funzione
  • __getitem__ implementa l'operatore parentesi in entrata
  • __setitem__ implementa l'operatore parentesi quadre in uscita
  • __delitem__ elimina un valore self
  • __contains__ verifica l'appartenenza al contenitore
  • __add__ addiziona
  • __sub__ sottrae
  • __mul__ moltiplica
  • __div__ divide
  • __mod__ calcola il resto della divisione
  • __repr__ converte un oggetto in una stringa ( se __str__ non è disponibile )
  • __new__
  • __bytes__
  • __format__
  • __hash__
  • __bool__
  • __getattr__
  • __getattribute__
  • __setattr__
  • __delattr__
  • __dir__
  • __get__
  • __set__
  • __delete__
  • __set_name__
  • __slots__
  • __init_subclass__
  • __instancecheck__
  • __subclasscheck__
  • __call__
  • __length_hint__
  • __missing__
  • __iter__
  • __reversed__
  • __matmul__
  • __truediv__
  • __floordiv__
  • __divmod__
  • __pow__
  • __lshift__
  • __rshift__
  • __and__
  • __xor__
  • __or__
  • __radd__
  • __rsub__
  • __rmul__
  • __rmatmul__
  • __rtruediv__
  • __rfloordiv__
  • __rmod__
  • __rdivmod__
  • __rpow__
  • __rlshift__
  • __rrshift__
  • __rand__
  • __rxor__
  • __ror__
  • __iadd__
  • __isub__
  • __imul__
  • __imatmul__
  • __itruediv__
  • __ifloordiv__
  • __imod__
  • __ipow__
  • __ilshift__
  • __irshift__
  • __iand__
  • __ixor__
  • __ior__
  • __neg__
  • __pos__
  • __abs__
  • __invert__
  • __complex__
  • __int__
  • __float__
  • __round__
  • __index__
  • __enter__
  • __exit__
  • __await__
  • __aiter__
  • __anext__
  • __aenter__
  • __aexit__

Come visualizzare i metodi speciali di una classe

Per vedere quali metodi speciali sono associati a una classe o oggetto, basta digitare il comando help con il nome della classe tra parentesi.

>>> help(nomeclasse)

L'istruzione visualizza l'elenco dei metodi della classe.

Nella lista sono indicati anche i metodi speciali usati.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Classi Python