Python - 如何快速拉取一个对象的多个属性?
Python - How to quickly pull several attributes from an object?
我有一个专有的 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
,但它当然 return 没有任何作用。
>>> [exec('job_object.{}'.format(tag)) for tag in job_object.TAGS]
[None, None, None, None, None, None, None, None, None, None, None, None, None]
有没有另一种方法可以在不显式调用每个属性的情况下提取这些属性?
是的,我也无法让 exec
像您期望的那样工作。
然而,这似乎有效:
print([getattr(job_object, tag) for tag in job_object.TAGS])
但是,我刚刚查阅了 exec()
的文档,它总是 returns None
。
我有一个专有的 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
,但它当然 return 没有任何作用。
>>> [exec('job_object.{}'.format(tag)) for tag in job_object.TAGS]
[None, None, None, None, None, None, None, None, None, None, None, None, None]
有没有另一种方法可以在不显式调用每个属性的情况下提取这些属性?
是的,我也无法让 exec
像您期望的那样工作。
然而,这似乎有效:
print([getattr(job_object, tag) for tag in job_object.TAGS])
但是,我刚刚查阅了 exec()
的文档,它总是 returns None
。