a = SomeClass()
if hasattr(a, 'property'):
a.property
这是检查属性是否存在的惟一方法吗?是否有其他做法?
a = SomeClass()
if hasattr(a, 'property'):
a.property
这是检查属性是否存在的惟一方法吗?是否有其他做法?
AttributeError
异常。但使用hasattr
也是一种合理的方法。AttributeError
(可能由于代码中的错误)。好的,你可以尝试访问它并在AttributeError
出现时捕获它。
try:
a.foo
except AttributeError:
...
hasattr(a, 'foo')
和 a.foo
调用之间的某个时刻删除 a.foo
,而使用原子操作则可以避免这种情况。 - Kirk Strauser你也可以使用以下方法:
if 'property' in a.__dict__:
a.property
虽然不够优雅,但为了完整起见,使用dir()
也可以在对象没有定义__dict__
的情况下工作:
if 'property' in dir(a):
a.property
dir()
和__dict__
之间最大的区别是什么