在Python中检查属性的替代方法是什么?

6 投票
4 回答
2984 浏览
提问于 2025-04-17 11:54
a = SomeClass()
if hasattr(a, 'property'):
        a.property

这就是检查一个属性是否存在的唯一方法吗?有没有其他方法可以做到同样的事情?

4 个回答

1

你也可以使用:

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

你可以直接使用这个属性,如果它不存在的话,就捕捉到一个叫AttributeError的错误。不过,使用hasattr这个方法也是一个不错的选择。

捕捉错误可能会有一个问题,就是你不能很清楚地区分这个属性是根本不存在,还是它存在但在调用的时候有其他代码运行,导致出现AttributeError(可能是代码里的一个bug)。

你可能还想看看这些相关的问题,以获取更多关于这个话题的信息:

6

你可以试着去访问它,如果它不存在的话,就捕捉到一个叫做AttributeError的错误。

try:
    a.foo
except AttributeError:
    ...

撰写回答