Мне нужно создать собственный класс преобразователя для конвейера машинного обучения. testfun
на самом деле является функцией R, доступ к которой осуществляется через rpy2. testfun
затем используется внутри класса test
. Я хочу раскрыть все аргументы функции R, представленной testfun
, следовательно, **kwargs
. Но я не знаю, как пройти **kwargs
. Код ниже выдает ошибку.
def testfun(x=1, a=1, b=1, c=1):
return x**a, b**c
class test(BaseEstimator, TransformerMixin):
def __init__(self, **kwargs):
self.__dict__.update(**kwargs)
def testkwargs(self):
return testfun(**kwargs)
temp = test(x=1,a=1,b=2,c=3)
temp.testkwargs()
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-131-de41ca28c280> in <module>
5 return testfun(**kwargs)
6 temp = test(x=1,a=1,b=2,c=3)
----> 7 temp.testkwargs()
<ipython-input-131-de41ca28c280> in testkwargs(self)
3 self.__dict__.update(**kwargs)
4 def testkwargs(self):
----> 5 return testfun(**kwargs)
6 temp = test(x=1,a=1,b=2,c=3)
7 temp.testkwargs()
NameError: name 'kwargs' is not defined
Заранее спасибо!
РЕДАКТИРОВАТЬ: изменения в соответствии с ранними предложениями не очень помогли
class test(BaseEstimator, TransformerMixin):
def __init__(self, **kwargs):
self.__dict__.update(**kwargs)
def testkwargs(self, **kwargs):
return testfun(**kwargs)
temp = test(x=2,a=1,b=2,c=3)
temp.testkwargs()
Вывод:
(1, 1)