迭代时如何正确为ROBOT类传入多组三元参数?
解决Python类实例化时的元组参数解包问题
你的问题核心是直接传递元组会被当作单个参数处理,而ROBOT类的构造函数需要3个独立参数,导致参数匹配失败。
正确传参方式:用*运算符解包元组
在调用ROBOT时,在目标元组前添加*,Python会自动将元组内的元素拆分为独立的位置参数传入,完美匹配构造函数的参数要求:
# 按迭代索引取参数实例化 positionIndex = 0 # 根据迭代逻辑修改索引值 self.robots = ROBOT(*self.position[positionIndex])
遍历所有参数组的示例
如果要循环使用所有预设参数组,直接遍历self.position列表,每次解包元组即可:
for params in self.position: self.robots = ROBOT(*params) # 编写每次实例化后的业务逻辑
为什么之前的写法无效?
ROBOT(self.position[positionIndex]):把整个三元组元组作为单个参数传给ROBOT,相当于只传入了1个参数,无法满足构造函数需要3个参数的要求。self.robots[self.position[i]]:该写法本身错误,self.robots是ROBOT类的实例,并非可索引的容器(如列表),不能用下标访问。
内容的提问来源于stack exchange,提问作者Rashid Abramov
相关产品推荐
相关产品推荐

