【发布时间】:2018-12-06 20:53:08
【问题描述】:
当我尝试在此类 Game 中运行 self.chunkIt 时,我收到此错误:
Traceback (most recent call last):
File "C:\Users\Araújo\Desktop\hq_player.py", line 128, in <module>
g.new_question([1,2])
File "C:\Users\Araújo\Desktop\hq_player.py", line 84, in new_question
print(self.chunkIt(['1','2'],2))
TypeError: chunkIt() takes 2 positional arguments but 3 were given
如果尝试在控制台中单独运行它,它工作得很好。 为什么它传递 3 个参数? 类游戏: def init(self,number_questions,devices): self.number_questions = number_questions self.devices = 设备 self.question = 0
def new_question(self,options):
print(self.chunkIt(['1','2'],2))
def chunkIt(seq, num):
avg = len(seq) / float(num)
out = []
last = 0.0
while last < len(seq):
out.append(seq[int(last):int(last + avg)])
last += avg
return out
【问题讨论】:
-
self是第三个参数,因为你是如何称呼它的。您应该将self参数添加到chunkIt -
如果
chunkIt真的不需要self,您可以将其设为@staticmethod,或者,可能更好的是,将其设为顶级函数而不是方法。但是如果chunkIt可能在概念上对self有一些用处,即使您当前的实现不使用它,添加self参数并将其用作普通参数更有意义方法。