检查变量是否在python中定义的简单方法?

时间:2009-04-15 04:21:18

标签: python

有没有办法检查是否定义了具有指定名称的变量(类成员或独立)?例如:

if "myVar" in myObject.__dict__ : # not an easy way
  print myObject.myVar
else
  print "not defined"

5 个答案:

答案 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版中运行良好。