我知道错误是什么:
AttributeError: 'NoneType' object has no attribute 'something'
意味着,但我无法弄清楚的是如何抓住它。基本上我想检查我的对象是否已创建。
我想做这样的事情:
try:
test = self.myObject.values()
except:
print "Error happened"
但每次我都这样做:
AttributeError: 'NoneType' object has no attribute 'values'
有人能告诉我怎么抓住这个吗?
答案 0 :(得分:5)
您可以使用返回True或False的hasattr(object,name)方法。如果您尝试访问不存在的属性,您将始终收到异常。 https://docs.python.org/2/library/functions.html#hasattr
如果你仍想捕获异常,那么只需执行一个异常类型为'AttributeError'的try / catch块
答案 1 :(得分:1)
有很多方法可以做到这一点。如果您只想查看对象是否存在,您可以执行以下操作:
if self.myObject:
# do stuff with my object
else:
# do other stuff
#Or the more explicit form, if myObject could be 'falsey' normally, like an empty list/dict
if self.myObject is not None:
如果你可以指定一个合理的默认值,你可以像这样单行排列
test = self.myObject.something if self.myObject else default_value
default_value
是您可以作为合理默认值使用的任何内容。感谢python的short circuit evaluation,这是安全的,因为如果self.myObject.something
为self.myObject
(或假名),None
永远不会被评估。