在Python中有没有一种方法来确定对象是否具有某些属性?例如:

>>> a = SomeClass()
>>> a.someProperty = value
>>> a.property
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: SomeClass instance has no attribute 'property'

在使用a之前,如何判断它是否具有属性property

推荐答案

试试hasattr():

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

请看下面的zweiterlinde's answer条,谁提供了关于请求原谅的好建议!一种非常Python 式的方法!

python中的一般做法是,如果属性可能在大多数时间都存在,只需调用它,要么让异常传播,要么用try/except块捕获它.这可能会比hasattr快.如果属性可能在大多数时间都不存在,或者您不确定,那么使用hasattr可能比反复陷入异常块更快.

Python相关问答推荐

Pandas :列的值,然后按相同的 ID 分组和合并

使用 psycopg3 跨服务器复制表

遍历python中的列表并删除元素中字符的第二个实例之后的字符

如何将一列的所有项目移动到Pandas 中的列?

从 pandas 1.1.5 升级到最新版本

从 csv 导入数据 - 无法将字符串转换为浮点数

3级链式python导入失败

'str' 对象没有属性 'apply' 与 sklearn

将句子拆分为列表时如何保留空格?

是否有更好的正则表达式来计算中文字母的数量并同时排除一些字符?

Python:为什么 pip install 不从 sdist 部署我的代码?

将负数四舍五入到最接近零的 1,000

Pandas .title() 当字符串有一个's

函数的许多递归调用之一找到了正确的结果,但它不能“告诉”其他函数.有比这种丑陋的解决方法更好的解决方法吗?

交换数组中的元素

从 python `dataclass` `__repr__` 中排除默认字段

如何以必须从同一字符串中提取键和值的方式将字符串转换为字典

如何制作一个新的 pandas 列,它是最后 3 个值的平均值?

Raspberry pi 中的 GPS 模块使用 python 代码

如何将普通数据框转换为烛台数据框?