Під час інтеграції програми 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
Це лише заради ясності, чи я пропустив найважливішу частину: моторошні та захоплюючі речі, які без цього не можна було зробити?