rank vote url
54 397 83 538 url

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

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

  1. >>> a = SomeClass()
  2. >>> a.someProperty = value
  3. >>> a.property
  4. Traceback (most recent call last):
  5. File "<stdin>", line 1, in <module>
  6. AttributeError: SomeClass instance has no attribute 'property'

怎样在使用之前知道a是否有property这个属性?


试试hasattr():

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

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