Sobes.tech
Junior — Middle

Qual è la funzione del decoratore @staticmethod in Python e in cosa si differenzia dai metodi normali della classe?

sobes.tech AI

Risposta dell'AI

Il decoratore @staticmethod in Python viene utilizzato per definire un metodo all’interno di una classe che non dipende da un’istanza della classe e non accetta automaticamente il parametro self.

Differenze rispetto ai metodi normali:

  • I metodi normali accettano come primo parametro self — un riferimento all’istanza corrente della classe.
  • I metodi statici non accettano né selfcls (un riferimento alla classe).

Questo significa che un metodo statico è semplicemente una funzione logicamente collegata alla classe, ma che non utilizza il suo stato.

Esempio:

class MyClass:
    @staticmethod
    def static_method(x, y):
        return x + y

    def instance_method(self, x, y):
        return x * y

print(MyClass.static_method(3, 4))  # 7
obj = MyClass()
print(obj.instance_method(3, 4))   # 12

I metodi statici sono utili per funzioni di utilità che hanno senso nel contesto della classe, ma non richiedono accesso ai suoi dati.