我正在尝试声明静态变量,现在我的代码是:
class StaticClass:
varA = 'hello'
@staticmethod
def staticMethod():
varA='bye'
以下代码的结果是你好。为什么不'再见'?
StaticClass.staticMethod()
print StaticClass.varA
答案 0 :(得分:4)
staticMethod()
中的代码将字符串bye
分配给局部变量varA
,然后返回,删除局部变量。函数内部的赋值总是在Python中创建局部变量。 Python中的staticmethod
根本无法访问该类 - 为此需要classmethod
:
class StaticClass:
var_a = 'hello'
@classmethod
def cls_method(cls):
cls.var_a = 'bye'
答案 1 :(得分:1)
这是因为您在varA
中定义的StaticClass.staticMethod()
位于方法的名称空间中,而不是在类名称空间中,如果您想要访问类“varA
,您应该执行以下操作:
StaticClass.varA = 'bye'
顺便说一句,您不需要创建静态方法来执行此操作。