从python中的对象列表中获取对象属性列表

时间:2012-10-17 18:15:35

标签: python

我会给你我的具体例子,但这是一个普遍的python问题。

我有一个apscheduler作业对象列表Link我试图找出从我的apscheduler作业列表中获取apscheduler作业属性列表'kwargs'的最有效方法。

我知道我可以遍历整个列表并创建一个新的kwargs列表,但我想知道是否有更高效/更清晰的方法在python中执行此操作,因为我是新手。谢谢!

from apscheduler.scheduler import Scheduler

schedule = Scheduler()
jobs = schedule.get_jobs() #jobs is a list of apscheduler jobs
jobs_kwargs = ???

3 个答案:

答案 0 :(得分:1)

嗯,你几乎说过:

jobs = schedule.get_jobs()
jobs_kwargs = [j.kwargs for j in jobs]

据我所知,实际上并没有“清洁”的方式。

答案 1 :(得分:1)

在同事的帮助下弄明白了。这可以通过使用map:

来完成
from apscheduler.scheduler import Scheduler

schedule = Scheduler()
jobs = schedule.get_jobs() #jobs is a list of apscheduler jobs
jobs_kwargs = map(lambda k: k.kwargs, jobs)

这可以更高效,因为它并行处理任务(我仍然需要查看它以获取更多信息)。谢谢你的建议!

答案 2 :(得分:0)

我同意John的观点。

也许是一个建议:

如果您的作业对象都是Schedule类类型,则动态追加到class属性(不是self而是cls),即 kwargs 每当一个作业对象实例化时,每个作业对象都会变成kwargs,这样在任何时候,你可以从那个类属性中读取。通过一种叫做schedule.get_gwargs(cls)的类方法。

但我不确定这会带来什么比简单列表理解更好。