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]