【问题标题】:Python - How to quickly pull several attributes from an object?Python - 如何快速从对象中提取多个属性?
【发布时间】:2020-01-15 21:05:12
【问题描述】:

我有一个专有的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]

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

【问题讨论】:

  • 你能编辑 job_object 的类吗?你能加一个def __str__(self): return list_of_desired_tags

标签: python attributes exec


【解决方案1】:

是的,我也无法让 exec 像您期望的那样工作。

但是,这似乎有效:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-17
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    • 2019-03-17
    • 2019-12-04
    • 1970-01-01
    • 2016-07-12
    相关资源
    最近更新 更多