检查python中是否有任何属性的任何替代方法?

时间:2012-01-29 22:21:08

标签: python attributes

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

这是检查是否有房产的唯一方法吗?有没有其他方法可以做同样的事情?

3 个答案:

答案 0 :(得分:8)

您可以使用该属性并捕获AttributeError异常(如果它不存在)。但使用hasattr也是一种合理的方法。

捕获异常的一个潜在问题是,您无法轻易区分不存在的属性,并且它已经存在,但是当您调用它时,某些代码会运行并且 代码会引发{{ 1}}(可能是由于代码中的错误)。

您可能还想查看这些相关问题,以获取有关此主题的更多信息:

答案 1 :(得分:5)

好吧,您可以尝试访问它并捕获AttributeError以防它不存在。

try:
    a.foo
except AttributeError:
    ...

答案 2 :(得分:1)

你也可以使用:

if 'property' in a.__dict__:
    a.property