2011-02-15 107 views
1

我想声明静态变量,现在我的代码是:问题的静态变量

class StaticClass: 
    varA = 'hello' 

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

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

StaticClass.staticMethod() 

print StaticClass.varA 
+1

看起来像Java模式,不像Python。你想达到什么目的? – 2011-02-15 12:24:23

+0

我试图在一个方法中声明变量,并且可以从此类中的其他静态方法以及其他类中获取此变量。 – user278618 2011-02-15 12:27:12

回答

4

该代码在staticMethod()将字符串bye局部变量varA,然后返回,滴局部变量。函数内的赋值总是在Python中创建局部变量。 Python中的staticmethod具有在所有访问类的没有办法 - 你需要一个classmethod用于此目的:

class StaticClass: 
    var_a = 'hello' 

    @classmethod 
    def cls_method(cls): 
     cls.var_a = 'bye' 
1

这是因为你在StaticClass.staticMethod()定义varA是在方法的命名空间,而不是在类的命名空间,如果要访问类的varA你应该这样做:

StaticClass.varA = 'bye' 

顺便说一句,你不需要创建一个静态方法来做到这一点。