这是一个相关的问题:How do I check if a variable exists?
但是,它对静态变量不起作用。
我想做的是以下内容,
class A:
def __init__(self):
if A.var is null: # this does not work, okay
A.var = 'foo'
print 'assigned'
好的,因为A.var
甚至没有分配。它引起了错误。所以,我试过这个:
class A:
def __init__(self):
if 'A.var' not in globals(): # this seems to okay, but ..
A.var = 'foo'
print 'assigned'
a = A()
b = A()
结果:
assigned
assigned
表明if 'A.var' not in globals():
行无效。
那么,我如何检查Python中是否存在静态变量?
答案 0 :(得分:6)
您使用hasattr
:
if not hasattr(A, 'var'):
A.var = 'foo'
或者,根据“更容易请求宽恕而不是许可”的原则,有些人更愿意这样做:
try:
A.var
except NameError:
A.var = 'foo'
最后,您只需在类体中定义默认值:
class A(object):
var = None
...
if A.var is None:
a.var = 'foo'
(注意,这两种方法都不是线程安全的)