在Python方法中,我想要一个局部变量,其值在调用方法之间保持不变。python方法中的静态变量
This question显示了如何在函数内声明这样的“静态变量”(C++术语)。我尝试在实例方法中执行相同的操作,但失败了。
下面是一个可以重现问题的简单示例。您可以将其复制粘贴到解释器中。
class SomeClass(object):
def some_method(self):
if not hasattr(SomeClass.some_method, 'some_static_var'):
SomeClass.some_method.some_static_var = 1 # breaks here
for i in range(3):
print SomeClass.some_method.some_static_var
SomeClass.some_method.some_static_var += 1
if __name__ == '__main__':
some_instance = SomeClass()
some_instance.some_method()
上标有 “#符这里” 行了,我得到:
AttributeError: 'instancemethod' object has no attribute 'some_static_var'
我知道有一个简单的解决办法,我在那里做some_static_var
的SomeClass
一个成员变量。然而,这个变量在这个方法之外确实没有用处,所以如果可以的话,我宁愿让它免于混淆SomeClass
的命名空间。
什么'SomeClass的。 some_method.im_func.some_static_var = 1'(假设python2) –