При интеграции приложения Django, которое я раньше не использовал, я нашел два разных способа определения функций в классах. Автор, кажется, использует их оба очень преднамеренно. Первый - тот, который я сам использую много:
class Dummy(object):
def some_function(self,*args,**kwargs):
do something here
self is the class instance
Другой - тот, который я не использую, в основном потому, что я не понимаю, когда его использовать, и для чего:
class Dummy(object):
@classmethod
def some_function(cls,*args,**kwargs):
do something here
cls refers to what?
В документах Python декор classmethod
объясняется этим предложением:
Метод класса получает класс как неявный первый аргумент, просто как метод экземпляра получает экземпляр.
Итак, я думаю, cls
относится к Dummy
самому (class
, а не к экземпляру). Я не совсем понимаю, почему это существует, потому что я всегда мог это сделать:
type(self).do_something_with_the_class
Это просто для ясности, или я пропустил самую важную роль: жуткий и увлекательный, что нельзя было сделать без него?