2013-07-02 29 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

相关问题