Ao integrar um aplicativo Django que não usei antes, descobri duas maneiras diferentes de definir funções em classes. O autor parece usar os dois muito intencionalmente. O primeiro é um que eu mesmo uso muito:
class Dummy(object):
def some_function(self,*args,**kwargs):
do something here
self is the class instance
O outro é um que não uso, principalmente porque não entendo quando usá-lo e para que:
class Dummy(object):
@classmethod
def some_function(cls,*args,**kwargs):
do something here
cls refers to what?
Nos documentos Python, o classmethod
decorador é explicado com esta frase:
Um método de classe recebe a classe como primeiro argumento implícito, assim como um método de instância recebe a instância.
Então eu acho que cls
se refere a Dummy
si mesmo (a class
, não a instância). Eu não entendo exatamente porque isso existe, porque eu sempre poderia fazer isso:
type(self).do_something_with_the_class
É apenas por uma questão de clareza ou perdi a parte mais importante: coisas assustadoras e fascinantes que não poderiam ser feitas sem ele?