5. I Metodi Statici

In questa lezione sulla programmazione a oggetti in Python faremo, per completezza, un accenno ai metodi statici. Finora nella serie abbiamo visto che ai metodi di classe passiamo come primo parametro la classe tramite cls, e che ai Metodi "classici" passiamo invece l'istanza tramite self.

I metodi statici sono da questo punto di vista, molto più semplici: a loro non passiamo nessuno dei due, ne cls ne self. In Python, i Metodi Statici sono funzioni che teniamo all'interno della classe perché hanno una qualche correlazione con il contesto che stiamo modellando, ma non vi sono legati direttamente, come accade invece nel caso della scheda personale o del costruttore alternativo: non dovremo quindi creare alcun oggetto per poterli richiamare.


Il decoratore @staticmethod

Nel nostro contesto didattico possiamo creare un metodo statico che ci restituisce informazioni specifiche riguardo al codice che stiamo utilizzando. Per creare un metodo statico usiamo il decoratore corrispondente, ovvero @staticmethod.

@staticmethod
def info_prog():
    info = """
        Nome: Persona
        Creato da: PyMike
        Portale: www.programmareinpython.it
        Commenti: Scritto usando Python 3"""

    return info

Quindi, ora siamo in grado di accedere al metodo anche senza avere creato prima alcun oggetto:

print(Persona.info_prog)

# output
  Nome: Classe Persona
  Creato da: PyMike
  Portale: www.programmareinpython.it
  Commenti: Scritto usando Python 3

Ci sono due scuole di pensiero al riguardo in Python: alcuni programmatori ritengono addirittura che essi siano sostanzialmente inutili, perché i contesti in cui si possono utilizzare sono abbastanza limitati: queste funzioni potrebbero essere scritte al di fuori della Classe o richiamate tramite Modulo.

Io sono del parere che, per quanto i casi d'uso siano effettivamente limitati, talvolta i metodi statici possono aiutarci a mantenere il codice pulito e organizzato, si tratta quindi di uno strumento che è comunque bene conoscere, anche perché estremamente semplice da capire.