有没有办法检查是否定义了具有指定名称的变量(类成员或独立)?例如:
if "myVar" in myObject.__dict__ : # not an easy way
print myObject.myVar
else
print "not defined"
答案 0 :(得分:29)
紧凑的方式:
print myObject.myVar if hasattr(myObject, 'myVar') else 'not defined'
不过,htw的方式更像是Pythonic。
hasattr()
与x in y.__dict__
不同,但是:hasattr()
考虑了继承的类属性,以及从__getattr__
返回的动态属性,而y.__dict__
仅包含属于y
实例的属性的对象。
答案 1 :(得分:22)
try:
print myObject.myVar
except NameError:
print "not defined"
答案 2 :(得分:9)
Paolo是对的,如果需要的话,你可能会有一些事情。但是,如果你只是做一些快速而肮脏的事情,你可能不关心Idiomatic Python,那么这可能会更短。
try: x
except: print "var doesn't exist"
答案 3 :(得分:4)
在python中阅读和/或技巧: 本地()和
中的'a'答案 4 :(得分:4)
测试是否定义了变量myvar:
result = dir().count('myvar')
如果定义了myvar,结果为1
,否则为0
。
这在Python 3.1.2版中运行良好。