2012-10-17 4 views
0

구체적인 예를 들겠습니다. 그러나 일반적인 파이썬 질문입니다.파이썬 객체 목록에서 객체 속성 목록 가져 오기

apscheduler 작업 객체 목록이 있습니다. Link apscheduler 작업 목록에서 'apstimate job'속성 인 'kwargs'목록을 얻는 가장 효율적인 방법은 무엇인지 알아 내려고합니다.

필자가 전체 목록을 반복하고 kwargs의 새 목록을 만들 수 있음을 알고 있지만 필자가 익숙하지 않으므로 파이썬으로이 작업을 수행하는 데 더 효율적이고 명확한 방법이 있는지 궁금합니다. 감사!

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

나는 이에 대해 John과 동의합니다.

어쩌면 제안 :

당신의 작업 개체를 예약 클래스 유형의 모든 경우, 동적으로 클래스 속성에 추가 (안 자기 만 CLS) 즉 kwargs로 너무 하나가 인스턴스화됩니다 때마다 각 작업 개체의 kwargs로를, 그 클래스 속성에서 언제든지 읽을 수 있습니다. ie 즉 schedule.get_gwargs (cls)라고하는 클래스 메소드를 통해.

그러나 이것은 단순한 목록 이해보다 나은 것을 가져올 지 확신하지 못합니다.

관련 문제