2013-07-02 31 views
0

我想知道是否有一種很好的方法來完成以下操作:我想通過for循環運行並使用迭代和有時隨機屬性創建對象的實例。我特別想說的是這樣的:將格式化的字符串作爲參數傳遞給函數

OUT_TASK = "Task_{id1}, FUNCTION, {id2}, task{id3}_types, None" 
t = Task(OUT_TASK.format(id1=i, id2='doNothing', id3=i)) 

眼下編譯器告訴我,我只路過2個參數任務(),而它期望至少4

很多謝謝 - 線索表示讚賞。

回答

0

您的代碼現在正在執行的是將單個字符串傳遞給Task()構造函數。你想,而不是什麼是單獨格式化每個這樣的論點:

t = Task("Task_{0}".format(i), "FUNCTION", id2, "task{0}_types".format(i), None) 

如果你不知道提前多少個參數你將有,你可以建立一個列表,並與*args傳遞做法:

params = [] 
params.append("Task_{0}".format(i)) 
# ... 
params.append("task{0}_types".format(i)) 
params.append(None) 
t = Task(*params) 

雖然更好的辦法是一本字典(該**kwargs的方法),因爲這樣的話,你不必在意你的構造則params的順序:

params = {} 
params['something'] = "Task_{0}".format(i) 
params['something_else'] = "task{0}_types".format(i) 
# ... 
params['last_thing'] = None 
t = Task(**params) 
+0

那就是票。謝謝! – empireryan

相關問題