Python认为我传递了4个参数,但我显然只传递了3个

And*_*ham 0 python arguments

错误是:

TypeError:  kernel() takes exactly 3 arguments (4 given)
Run Code Online (Sandbox Code Playgroud)

相应的代码是:

K[i][j] = self.kernel(self, B[i], C[j])
...
def kernel(self, P, Q)
Run Code Online (Sandbox Code Playgroud)

以下行的结果是:

print self:  object at 0x....
print len((self, B[i], C[j])): 3
print len((B[i])): 4
print len((C[j])): 4
Run Code Online (Sandbox Code Playgroud)

为什么会说4个参数,我该如何解决呢?

Mar*_*ers 5

绑定方法已自动self 添加,隐式添加.不要明确传递它:

K[i][j] = self.kernel(self, B[i], C[j])
Run Code Online (Sandbox Code Playgroud)

删除self那里:

K[i][j] = self.kernel(B[i], C[j])
Run Code Online (Sandbox Code Playgroud)

否则kernel()被调用kernel(self, self, B[i], C[j]),或4个参数.