[Python] Quando è opportuno usare @staticmethod?

Marco Ippolito ippolito.marco a gmail.com
Dom 30 Nov 2014 14:11:43 CET


Scusami Marco se ti rispondo solo ora.
Ti ringrazio tanto per l'allegato che hai postato.Ora mi è più chiaro.

L'utilissimo commento di Enrico mi ha rincuorato un pò, nel senso che
finora non ho usato @staticmethod ed, ogni volta che mi sono domandato
se potesse servirmi nel caso che stavo trattando, non ho trovato
motivi per usarlo.

Comunque è un tool in più...meglio averlo che non averlo.

Vi ringrazio.
Marco

Il 30 novembre 2014 13:06, enrico franchi <enrico.franchi a gmail.com> ha scritto:
>
>
> 2014-11-29 11:15 GMT+00:00 Marco Ippolito <ippolito.marco a gmail.com>:
>>
>> ciao Marco,
>> ti ringrazio per la risposta.
>>
>> Ammetto che faccio fatica a comprendere il caso concreto.
>> Entrando nello specifico. Consigli di usare @staticmethod quando è
>> utile disaccoppiare il metodo dall'oggetto.
>
>
> Personalmente, suggerisco di guardare staticmethod con sospetto.
> Ci sono casi in cui e' utile, indubbiamente. Il commento chiave e':
>
> """
> Avrei potuto utilizzare una normale funzione ma può essere utile avere
> tutte le funzioni organizzate sotto lo stesso tetto, oppure può essere
> necessario nel caso in cui l'oggetto implementi una specifica
> interfaccia.
> """"
>
> In particolare, spesso e volentieri volere a tutti i costi usare
> staticmethod per fare il mestiere di funzioni (sotto sotto quello sono,
> funzioni nel namespace di una classe) e' indice di qualcosa che non
> funziona.
>
> Poi ci sono una serie di casi in cui la faccenda puo' anche avere senso
> (e.g., si sta implementando uno strategy pattern e si hanno parti della
> strategia che davvero non dipendono dalla definizione dell'istanza o della
> classe).
>
> In generale, dal mio punto di vista, e' un potenziale smell che sa *molto*
> di Javista (ovvero, la maggior parte degli usi di staticmethod che vedo sono
> a sproposito, quelli "buoni" sono una minoranza).
>
> A me verrebbe da dirti: capisci come funziona, archivia da qualche parte che
> esiste, cerca di non rivolgerti a lui. Ci potrebbero essere casi in cui devi
> farlo, e sperabilmente ti sara' chiaro allora. Sospetta quando succede,
> valuta le alternative, e se alla fine porta benefici vai senza paura: e' una
> feature del linguaggio e non ha nulla di male di per se. Solo attento a non
> usarla a sproposito.
>
> Se ad un certo punto ti accorgi che stai facendo classi che sono solo o
> principalmente raggruppamenti statici in un namespace di metodi correlati,
> metti conto che quello sarebbe il mestiere dei moduli.
>
>
> --
> .
> ..: -enrico-
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>


Maggiori informazioni sulla lista Python