Sobes.tech
Junior

Come vengono implementati i metodi statici in Python?

sobes.tech AI

Risposta dell'AI

Il metodo statico non è legato a un'istanza della classe né alla classe stessa. Si comporta come una funzione normale, ma si trova nello spazio dei nomi della classe.

Viene implementato usando il decoratore @staticmethod.

class MyClass:
    def __init__(self, value):
        self.value = value

    def instance_method(self):
        # Il metodo di istanza ha accesso a self
        print(f"Metodo di istanza: {self.value}")

    @classmethod
    def class_method(cls):
        # Il metodo di classe ha accesso alla classe tramite cls
        print(f"Metodo di classe: {cls.__name__}")

    @staticmethod
    def static_method(x, y):
        # Il metodo statico non riceve argomenti impliciti (self o cls)
        print(f"Metodo statico: {x + y}")

# Chiamata al metodo statico
MyClass.static_method(5, 10)

# Può essere chiamato anche tramite un'istanza, ma non è consigliato
obj = MyClass(20)
obj.static_method(1, 2)

Caratteristiche principali:

  • Non accetta il primo argomento implicito (self o cls).
  • Non ha accesso agli attributi dell'istanza o della classe.
  • Si trova nello spazio dei nomi della classe per raggruppamento logico.
  • Può essere chiamato sia tramite la classe che tramite un'istanza (anche se la chiamata tramite la classe è preferibile).

Lo scopo principale è di funzioni ausiliarie legate alla classe, ma che non dipendono dallo stato di un'istanza specifica o dalla classe stessa (ad esempio, funzioni di supporto, validatori, generatori che logicamente appartengono alla classe).