Python staticmethod()

La funzione staticmethod() restituisce un metodo statico per una data funzione.

La sintassi di è:

staticmethod(funzione)

L'uso di staticmethod() è considerato un modo non pitonico di creare una metodo statico.

Quindi nelle versioni più recenti di Python, è stata introdotta la possibilità di utilizzare il decoratore @staticmethod.

La sintassi del @staticmethod è:

@staticmethod
def func(args, ...)

Il metodo staticmethod() prende un singolo parametro ovvero la funzione che deve essere convertita in un metodo statico.

Cos'è un metodo statico?

I metodi statici, molto simili ai metodi di classe, sono metodi che sono legati ad una classe piuttosto che al suo oggetto.

Non richiedono la creazione di un'istanza di classe quindi non sono dipendenti dallo stato dell'oggetto.

La differenza tra un metodo statico e un metodo di classe sono:

  • Il metodo statico non sa nulla della classe e si occupa solo dei parametri.
  • Il metodo classe funziona con la classe, poiché il suo parametro è sempre la classe stessa.

Può essere chiamato sia dalla classe che dal suo oggetto.

I metodi statici hanno un caso d'uso limitato perché, come i metodi di classe o qualsiasi altro metodo all'interno di una classe, non possono accedere alle proprietà della classe stessa.

Tuttavia, quando si ha bisogno di una funzione di utilità che non accede a nessuna proprietà di una classe, ma ha senso che appartenga alla classe, si usano funzioni statiche.

class Calcolo:
   def sommaNum(x, y):
      return x + y
# creo il metodo statico
Calcolo.sommaNum = staticmethod(Calcolo.sommaNum)

print ('La somma è:', Calcolo.sommaNum(5, 10))