如何知道一个对象有一个特定的属性?

优质
小牛编辑
116浏览
2023-12-01
rankvoteurl
5439783538url

如何知道一个对象有一个特定的属性?

有什么方法可以检测一个对象是否有某些属性?比如:

>>> 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是否有property这个属性?


试试hasattr():

if hasattr(a, 'property'):
    a.property

在大多数实际情况下,如果一个属性有很大可能存在,那么就直接调用它或者让它引发异常,或者用try/except捕获.这种方法比hasattr快.如果这个属性很多情况下不在,或者你不确定,那么用hasattr将会比触法异常更快.