В приведенном ниже примере класс Test имеет два метода экземпляра и один метод класса.
В методе set_cls_var_1 я устанавливаю переменную класса, используя self.
В методе set_cls_var_2 я вызываю метод класса, используя self.
class Test():
#class variable
cls_var = 10
def __init__(self):
obj_var=20
def set_cls_var_1(self,val):
#second method to access class variable
print "first "
self.cls_var = val
def set_cls_var_2(self):
print "second"
self.task(200)
@classmethod
def task(cls,val):
cls.cls_var = val
t=Test()
#set class variable by first method
t.set_cls_var_1(100)
print Test.cls_var
#set class variable by second method
t.set_cls_var_2()
print Test.cls_var
Вывод
first
10
second
200
Ожидаемый результат
first
100
second
200
Мой вопрос: почему только classmethod может вызывать себя, почему не переменная класса