Почему вы получали TypeError:
Когда вы вызываете метод с self.printit(**somedict)
, первым аргументом, переданным функции printit
, является self
. Так что, если вы определяете
def printit(distances, labels):
distances
установлен в self
. Так как somedict
содержит ключ с именем distances
, ключевое слово distances
поставляется два раза. Вот почему поднимался 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]
Что 'prediction'? Вы попробовали просто 'print dict.значения() '? – BrenBarn