在Python中是否有一种方法来确定一个对象是否具有某种属性? 比如说。
>>> a = SomeClass()
>>> a.someProperty = value
>>> a.property
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'
在使用之前,如何判断a
是否具有属性
?
尝试 hasattr()
。
if hasattr(a, 'property'):
a.property
编辑:请看下面zweiterlinde'的回答,他提供了关于请求宽恕的好建议!一个很好的pythonic方法!
在python中,一般的做法是,如果这个属性在大多数时候都会存在,那么就简单地调用它,让异常传播,或者用一个try/except块来捕获它。这可能会比 hasattr
更快。如果该属性在大多数情况下不存在,或者你不确定,使用hasattr
可能会比反复落入异常块更快。
我想你正在寻找的是hasattr。然而,如果你想探测***python属性,我推荐这样的方法
try:
getattr(someObject, 'someProperty')
except AttributeError:
print "Doesn't exist"
else
print "Exists"
这里的缺点是,属性__get__
代码中的属性错误也会被捕获。
否则,做-
if hasattr(someObject, 'someProp'):
#Access someProp/ set someProp
pass
文档:http://docs.python.org/library/functions.html
警告:
我的建议的原因是hasattr并不检测属性。
链接:http://mail.python.org/pipermail/python-dev/2005-December/058498.html