Durante l'integrazione di un'app Django che non ho usato prima, ho trovato due modi diversi utilizzati per definire le funzioni nelle classi. L'autore sembra usarli entrambi molto intenzionalmente. Il primo è quello che io stesso uso molto:
class Dummy(object):
def some_function(self,*args,**kwargs):
do something here
self is the class instance
L'altro è quello che non uso, soprattutto perché non capisco quando usarlo e per cosa:
class Dummy(object):
@classmethod
def some_function(cls,*args,**kwargs):
do something here
cls refers to what?
Nella documentazione Python il classmethod
decoratore viene spiegato con questa frase:
Un metodo di classe riceve la classe come primo argomento implicito, proprio come un metodo di istanza riceve l'istanza.
Quindi immagino si cls
riferisca a Dummy
se stesso (il class
, non l'istanza). Non capisco esattamente perché questo esista, perché potrei sempre farlo:
type(self).do_something_with_the_class
È solo per motivi di chiarezza o mi sono perso la parte più importante: cose inquietanti e affascinanti che non si potrebbero fare senza di essa?