So cosa fanno e ho visto molti esempi di entrambi, ma non ho trovato un singolo esempio in cui avrei dovuto usare classmethod
invece di sostituirlo con uno staticmethod
.Perché usare classmethod invece di staticmethod?
L'esempio più comune di classmethod
che ho visto è per la creazione di una nuova istanza della classe stessa, come questo (esempio molto semplificato, non c'è l'uso del metodo di atm, ma si ottiene l'idea.):
class Foo:
@classmethod
def create_new(cls):
return cls()
Ciò restituire una nuova istanza di Foo
quando si chiama foo = Foo.create_new()
. Ora, perché non posso semplicemente utilizzare questo invece:
class Foo:
@staticmethod
def create_new():
return Foo()
lo fa esattamente lo stesso, perché dovrei mai usare un classmethod
nel corso di un staticmethod
?
@KevinBrydon non c'è * risposta * alla domanda OPs in quella pagina ma potrebbe essere nei commenti lì. Non so se questo è un motivo sufficiente per chiudere questo sebbene – jamylak
Questa domanda NON è un duplicato della domanda collegata. Le risposte alla domanda collegata non si rivolgono a WHY perché useresti i metodi di classe su metodi statici, o viceversa. – spacetyper