静态变量的问题

时间:2011-02-15 12:23:05

标签: python static

我正在尝试声明静态变量,现在我的代码是:

class StaticClass:
    varA = 'hello'

    @staticmethod
    def staticMethod():
        varA='bye'

以下代码的结果是你好。为什么不'再见'?

StaticClass.staticMethod()

print StaticClass.varA

2 个答案:

答案 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'

顺便说一句,您不需要创建静态方法来执行此操作。