我想知道是否有一种很好的方法来完成以下操作:我想要运行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个。
非常感谢 - 线索受到赞赏。
答案 0 :(得分: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)