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

shi*_*bly 3 python attributes

a = SomeClass()
if hasattr(a, 'property'):
        a.property
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ers 8

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

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

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


Cat*_*lus 5

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

try:
    a.foo
except AttributeError:
    ...
Run Code Online (Sandbox Code Playgroud)