【发布时间】:2017-12-20 15:43:59
【问题描述】:
在下面的例子中 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可以自己调用,为什么不是class变量
【问题讨论】:
-
在实例上分配属性永远不会分配给类属性。
-
但是当我可以像“print self.cls_var”一样访问“set_cls_var_1”中的“cls_var”时。为什么以及如何可能,我不明白
-
这意味着我只能在实例方法中获取类变量,不能在实例方法中使用 self 设置类变量
标签: python python-2.7 class class-method class-variables