Когда я должен использовать @classmethod и когда метод def (self)?

При интеграции приложения 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?

В документации по Pythonclassmethod декоратор объясняется этим предложением:

A class method receives the class as implicit first argument, just like an instance method receives the instance.

Так что я думаюcls относится кDummy сам (class, а не экземпляр). Я не совсем понимаю, почему это существует, потому что я всегда мог сделать это:

type(self).do_something_with_the_class

Это только для ясности, или я упустил самую важную часть: жуткие и захватывающие вещи, которые нельзя было бы сделать без этого?

Ответы на вопрос(2)

Ваш ответ на вопрос