Sobes.tech
Junior — Middle

Qual è la differenza tra l'uso di un metodo statico e di un metodo di classe in Python?

sobes.tech AI

Risposta dell'AI

Un metodo statico in Python è un metodo che non riceve automaticamente né un'istanza della classe (self) né la classe stessa (cls) come primo argomento. Viene dichiarato con il decoratore @staticmethod e si comporta come una funzione normale, ma logicamente appartiene alla classe.

Un metodo di classe viene dichiarato con il decoratore @classmethod e riceve la classe (cls) come primo argomento. Questo permette al metodo di lavorare con la classe stessa, ad esempio creando nuove istanze o modificando le proprietà della classe.

Esempio:

class MyClass:
    @staticmethod
    def static_method():
        print("Questo è un metodo statico")

    @classmethod
    def class_method(cls):
        print(f"Questo è un metodo di classe, chiamato per {cls}")

MyClass.static_method()  # Stampa: Questo è un metodo statico
MyClass.class_method()   # Stampa: Questo è un metodo di classe, chiamato per <class '__main__.MyClass'>

Quindi, usa un metodo statico quando la funzione non dipende dallo stato della classe o delle sue istanze, e un metodo di classe quando hai bisogno di lavorare con la classe stessa.