为什么你得到一个 TypeError:
当您使用 调用方法时self.printit(**somedict),传递给函数的第一个参数printit是self。所以如果你定义
def printit(distances, labels):
设置distances为self。由于somedict包含一个名为 的键distances,因此该distances关键字被提供了两次。这就是为什么TypeError要提出。
如何修复它:
你的功能
def printit(distances,lables):
使用一个名为 的变量lables,但 dict 有一个拼写的键labels。您可能想更改lables为labels.
self作为第一个参数添加到printit.
def printit(self, distances, labels):
调用第一个参数self只是一个约定——你可以把它叫做别的东西(虽然不推荐)——但你肯定需要在调用之后放一些变量名
self.printit(...)会打电话printit(self, ...)。
例如,
import numpy as np
class Foo(object):
def printit(self, distances, labels):
print distances
print labels
somedict = {'distances': np.array([ 870.99793539]), 'labels': np.array([2])}
self = Foo()
self.printit(**somedict)
印刷
[ 870.99793539]
[2]