为什么你得到一个 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]