我想声明静态变量,现在我的代码是:问题的静态变量
class StaticClass:
varA = 'hello'
@staticmethod
def staticMethod():
varA='bye'
的代码如下结果是你好。为什么不'再见'?
StaticClass.staticMethod()
print StaticClass.varA
我想声明静态变量,现在我的代码是:问题的静态变量
class StaticClass:
varA = 'hello'
@staticmethod
def staticMethod():
varA='bye'
的代码如下结果是你好。为什么不'再见'?
StaticClass.staticMethod()
print StaticClass.varA
该代码在staticMethod()
将字符串bye
局部变量varA
,然后返回,滴局部变量。函数内的赋值总是在Python中创建局部变量。 Python中的staticmethod
具有在所有访问类的没有办法 - 你需要一个classmethod
用于此目的:
class StaticClass:
var_a = 'hello'
@classmethod
def cls_method(cls):
cls.var_a = 'bye'
这是因为你在StaticClass.staticMethod()
定义varA
是在方法的命名空间,而不是在类的命名空间,如果要访问类的varA
你应该这样做:
StaticClass.varA = 'bye'
顺便说一句,你不需要创建一个静态方法来做到这一点。
看起来像Java模式,不像Python。你想达到什么目的? – 2011-02-15 12:24:23
我试图在一个方法中声明变量,并且可以从此类中的其他静态方法以及其他类中获取此变量。 – user278618 2011-02-15 12:27:12