在python里如何知道对象中是否有某某属性
用 hasattr()
:
if hasattr(a, 'property'): a.property
编辑:请看下面第二位会员的回答,他提供了请求原谅的好建议!一个非常牛逼的方法!
python中的一般做法是,如果属性可能大部分时间都在那里,只需调用它,然后让它报错,或者用try/except块捕获它。这可能比hasattr方法 快。如果该属性可能不是大多数时候的属性,或者您不确定,那么使用hasattr可能会比多次落入异常块中更快。
As Jarret Hardie answered, hasattr
will do the trick. I would like to add, though, that many in the Python community recommend a strategy of "easier to ask for forgiveness than permission" (EAFP) rather than "look before you leap" (LBYL). See these references:
正如贾***·哈迪所回答的那样,hasattr 有用。不过,我想补充一点,python社区中的许多人推荐了一种策略,即“请求宽恕比获得许可更容易”(eafp),而不是“三思而后行”(lbyl)。请参阅以下参考资料:
EAFP vs LBYL (was Re: A little disappointed so far)
EAFP vs. LBYL @Code Like a Pythonista: Idiomatic Python
ie:
try: doStuff(a.property) except AttributeError: otherStuff()
... is preferred to:
…优先考虑:
if hasattr(a, 'property'): doStuff(a.property) else: otherStuff()
- 点赞
- 收藏
- 关注作者
评论(0)