Al integrar una aplicación de Django que no había usado antes, encontré dos formas diferentes de definir funciones en clases. El autor parece usarlos a ambos muy intencionalmente. El primero es uno que yo mismo uso mucho:
class Dummy(object):
def some_function(self,*args,**kwargs):
do something here
self is the class instance
El otro es uno que no uso, principalmente porque no entiendo cuándo usarlo y para qué:
class Dummy(object):
@classmethod
def some_function(cls,*args,**kwargs):
do something here
cls refers to what?
En los documentos de Python, el classmethod
decorador se explica con esta oración:
Un método de clase recibe la clase como primer argumento implícito, al igual que un método de instancia recibe la instancia.
Así que supongo que se cls
refiere a Dummy
sí mismo (la class
, no la instancia). No entiendo exactamente por qué existe esto, porque siempre podría hacer esto:
type(self).do_something_with_the_class
¿Es esto solo por claridad, o me perdí la parte más importante: cosas espeluznantes y fascinantes que no se podrían hacer sin ella?