[Python] Quando è opportuno usare @staticmethod?

Marco Giusti marco.giusti a posteo.de
Sab 29 Nov 2014 12:01:51 CET


On Sat, Nov 29 2014, Marco Ippolito wrote:
> Ciao a tutti,
> mi potreste spiegare quando sarebbe opportuno, perchè più efficace od
> efficiente, usare @staticmethod invece di "inglobare" (scusate per il
> termine poco tecnico) una funzione all'interno di una classe python in
> modo normale?
> 
> Marco

E' opportuno quando è utile disaccoppiare il metodo dall'oggetto. Per
esempio Pygtk non gestisce i riferimenti ciclici e mi è capitato di
individuare un memory leak perché un oggetto aveva un riferimento an un
oggetto Pygtk e a quest'ultimo avevo associato un metodo dell'oggetto
contenitore.

Ascii art time ;)

     |-----------------------
	 |                      |
	obj     pygtk_obj     method
	 |       |  |           |
	 --------|  ------------|

Avrei potuto utilizzare una normale funzione, ma volevo conservare una
coerenza e ordine nelle funzioni e staticmethod me lo permetteva.

m.



Maggiori informazioni sulla lista Python