我需要为机器学习管道创建一个自定义转换器类。testfun实际上是一个通过 rpy2 访问的 R 函数。testfun然后在test类中使用。我想公开由 表示的 R 函数的所有参数testfun,因此**kwargs。但我不知道如何通过**kwargs。下面的代码会引发错误。def testfun(x=1, a=1, b=1, c=1): return x**a, b**cclass 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)
2 回答
明月笑刀无情
TA贡献1828条经验 获得超4个赞
在这里你可以这样做。
def testfun(x=1, a=1, b=1, c=1):
return x**a, b**c
class test():
def __init__(self, **kwargs):
self.__dict__.update(**kwargs)
self.kwargs = kwargs
def testkwargs(self):
return testfun(**self.kwargs)
temp = test(x=1,a=1,b=2,c=3)
temp.testkwargs()
红糖糍粑
TA贡献1815条经验 获得超6个赞
你的测试功能应该是这样的..
def testfun(**kwargs): ... fetch each value using loop or similar...
像这样调用testfun..
testfun(a=1,b=2...)
添加回答
举报
0/150
提交
取消