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

Any alternative way to check if there is any attribute in python?

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

这是检查是否有属性的唯一方法吗?有没有其他方法来做同样的事情?


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

捕获异常的一个潜在问题是,您不能很容易地区分不存在的属性和它存在的属性,但是当您调用它时,会运行一些代码,并且该代码会引发AttributeError(可能是由于代码中的错误)。

您还可以查看这些相关问题,了解有关此主题的更多信息:

  • 如何知道对象在python中是否有属性
  • hasattr()vs try except块处理不存在的属性

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

1
2
3
4
try:
    a.foo
except AttributeError:
    ...


您还可以使用:

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