2014-09-23 40 views
-3

我正在使用一個Python日程安排庫併爲一週中的各天設置時間表。Genericise函數調用

schedule.every().monday.at(x).do(doADayofWeekTask) 
schedule.every().tuesday.at(x).do(doADayofWeekTask) 

我想用一個取代上述兩個電話:

schedule.every().blah.at(x).do(doADayofWeekTask) 

其中blah可星期一,星期二,星期三,等等。

+0

你在使用什麼庫?如果它的設計良好,它應該有一個很好的方法來做到這一點,所以你不必破解它... – abarnert 2014-09-23 07:07:58

+0

你的問題是什麼? – Hamish 2014-09-23 07:10:01

+0

'blah'是一個字符串的值嗎? – 2014-09-23 07:10:44

回答

2

我會想什麼像樣的調度庫將有一個很好的方式來動態地做到這一點,也許是這樣的:

schedule.every('monday').at(x).do(doADayofWeekTask) 

但如果沒有,你可以隨時動態地getattr訪問屬性:

getattr(schedule.every(), 'monday').at(x).do(doADayofWeekTask) 

這通常是一個壞主意...但如果你必須解決別人的庫,並不能使它容易做一個更好的辦法,這就是爲什麼「一般」沒有按一個很好的例子」 t意思是「永遠」。

無論哪種方式,你就可以,例如,環比天你想:

for day in 'monday', 'tuesday', 'wednesday', 'thursday': 
    getattr(schedule.every(), day).at(x).do(doADayofWeekTask) 

這是的,當然,關鍵要喊「星期一星期二星期三星期四」的機器人鬼的聲音聖誕節過去從未來,同時輸入這個。幾千年前,在我們知道Python出現之前,就有Guido。

+0

我喜歡精美的圖案。 – georg 2014-09-23 08:25:10