如何检查对象是否具有某些属性?例如:
>>> a = SomeClass()
>>> a.property
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'
在使用之前如何判断是否具有该属性?a
property
网友回答:
正如贾勒特·哈迪(Jarret Hardie)回答的那样,会做到这一点。不过,我想补充一点,Python社区中的许多人推荐一种“请求宽恕比许可更容易”(EAFP)而不是“在跳跃之前先看看”(LBYL)的策略。请参阅以下参考资料:hasattr
EAFP vs LBYL(是 Re:到目前为止有点失望)
EAFP vs. LBYL @Code 像一个 Pythonista:惯用的蟒蛇
结婚
try:
doStuff(a.property)
except AttributeError:
otherStuff()
…优先于:
if hasattr(a, 'property'):
doStuff(a.property)
else:
otherStuff()
网友回答:
尝试:hasattr()
if hasattr(a, 'property'):
a.property
请参阅下面的zweiterlinde的回答,他提供了关于请求宽恕的好建议!一种非常蟒蛇的方法!
python 中的一般做法是,如果属性大部分时间都存在,只需调用它并让异常传播,或者使用 try/except 块捕获它。这可能比 更快。如果该属性可能大部分时间都不存在,或者您不确定,则使用可能会比反复陷入异常块更快。hasattr
hasattr
网友回答:
您可以使用或捕获,但是如果您真的只想要属性的值,如果不存在默认值,则最好的选择是使用:hasattr()
AttributeError
getattr()
getattr(a, 'property', 'default value')
模板简介:该模板名称为【如何检查对象是否具有某些属性?如何判断是否具有该属性?aproperty】,大小是暂无信息,文档格式为.编程语言,推荐使用Sublime/Dreamweaver/HBuilder打开,作品中的图片,文字等数据均可修改,图片请在作品中选中图片替换即可,文字修改直接点击文字修改即可,您也可以新增或修改作品中的内容,该模板来自用户分享,如有侵权行为请联系网站客服处理。欢迎来懒人模板【Python】栏目查找您需要的精美模板。