2012-10-17 241 views
0

我会给你我的具体示例,但这是一个普通的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 = ??? 

回答

0

从同事的一点帮助中找出了它。这可以通过使用地图来完成:

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) 

推测这是因为它的并行进程更加高效的任务(我还是要看看它的详细信息)。感谢您的建议,但!

1

好了,你很可能说的那样:

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

据我知道,真的没有“干净”的方式比。

0

我同意约翰对此。

也许一个建议:

如果你的工作对象是所有的计划类类型的,动态追加到类属性(不言而CLS),即kwargs每当一个被实例化的每个作业对象kwargs,所以在任何时候,你都可以阅读该类的属性。通过即称为schedule.get_gwargs(cls)的类方法。

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