Python如何快速从一个对象中提取多个属性?

2024-05-03 04:16:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个专有的job对象,它有几个非方法字符串属性,我希望能够高效地编译成一个列表。job对象有一个属性TAGS,其中包含我要编译其值的属性名的完整列表,但没有方法只提取值。我正在寻找一种方法来利用TAGS列表有效地提取所有需要的字符串属性

>>> job_object.TAGS
('date', 'id', 'name', 'state', 'starttime', 'endtime', 'runs', ...) # There are 9 in all

我可以单独提取属性,但我希望有一个高效的实现,而不是硬编码,以防TAGS发生变化

>>> job_object.id
'1426013702'

我尝试过使用exec,但它当然不会返回任何结果

>>> [exec('job_object.{}'.format(tag)) for tag in job_object.TAGS]
[None, None, None, None, None, None, None, None, None, None, None, None, None]

有没有其他方法可以在不显式调用每个属性的情况下提取这些属性


1条回答
网友
1楼 · 发布于 2024-05-03 04:16:28

是的,我也不能让exec像你期望的那样工作

然而,这似乎奏效了:

print([getattr(job_object, tag) for tag in job_object.TAGS])

但是,我刚刚查找了文档中的exec(),它总是返回None

相关问题 更多 >