为了账号安全,请及时绑定邮箱和手机立即绑定

如何将 **kwargs 从类方法传递给函数

如何将 **kwargs 从类方法传递给函数

PIPIONE 2022-07-26 15:56:37
我需要为机器学习管道创建一个自定义转换器类。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()


查看完整回答
反对 回复 2022-07-26
?
红糖糍粑

TA贡献1815条经验 获得超6个赞

你的测试功能应该是这样的..

def testfun(**kwargs):
    ... fetch each value using loop or similar...

像这样调用testfun..

testfun(a=1,b=2...)


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 79 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信