0

我想知道是否有一种好方法可以完成以下任务:我想运行一个 for 循环并创建具有迭代属性和有时是随机属性的对象实例。特别是,我想说这样的话:

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

现在编译器告诉我,我只向 Task() 传递了 2 个参数,而它预计至少有 4 个。

非常感谢 - 线索表示赞赏。

4

1 回答 1

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['something'] = "Task_{0}".format(i)
params['something_else'] = "task{0}_types".format(i)
# ...
params['last_thing'] = None
t = Task(**params)
于 2013-07-02T04:41:58.607 回答