如何确定对象是否具有某些属性?例如:
>>> a = SomeClass()
>>> a.property
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'
Code language: JavaScript (javascript)
下面介绍三种方式
hasattr():
一般情况下建议使用 hasattr()
if hasattr(a, 'property'):
a.property
Code language: JavaScript (javascript)
hasattr
与使用try/except AttributeError
相同: hasattr 使用 getattr 手动捕获异常。
try/except AttributeError
try:
doStuff(a.property)
except AttributeError:
otherStuff()
if hasattr(a, 'property'):
doStuff(a.property)
else:
otherStuff()
Code language: PHP (php)
assert
hasattr()
可以很好地与assert
结合使用(避免不必要的if
语句并使代码更具可读性):
assert hasattr(a, 'property'), 'object lacks property'
print(a.property)
Code language: PHP (php)
如果缺少该属性,程序将退出并打印出AssertionError
提供的错误消息(object lacks property
)。