TypeError が発生した理由:
でメソッドを呼び出す場合self.printit(**somedict)、関数に渡される最初の引数printitは ですself。したがって、定義すると
def printit(distances, labels):
にdistances設定されていselfます。somedictというキーが含まれているためdistances、distancesキーワードが 2 回指定されています。それTypeErrorが引き上げられた理由です。
修正方法:
あなたの機能
def printit(distances,lables):
という名前の変数を使用しますlablesが、辞書には というスペルのキーがあります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]