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

我需要为机器学习管道创建一个自定义转换器类。testfun实际上是一个通过 rpy2 访问的 R 函数。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)


PIPIONE
浏览 80回答 2
2回答

明月笑刀无情

在这里你可以这样做。def testfun(x=1, a=1, b=1, c=1):&nbsp; &nbsp; return x**a, b**cclass test():&nbsp; &nbsp; def __init__(self, **kwargs):&nbsp; &nbsp; &nbsp; &nbsp; self.__dict__.update(**kwargs)&nbsp; &nbsp; &nbsp; &nbsp; self.kwargs = kwargs&nbsp; &nbsp; def testkwargs(self):&nbsp; &nbsp; &nbsp; &nbsp; return testfun(**self.kwargs)temp = test(x=1,a=1,b=2,c=3)temp.testkwargs()

红糖糍粑

你的测试功能应该是这样的..def&nbsp;testfun(**kwargs): &nbsp;&nbsp;&nbsp;&nbsp;...&nbsp;fetch&nbsp;each&nbsp;value&nbsp;using&nbsp;loop&nbsp;or&nbsp;similar...像这样调用testfun..testfun(a=1,b=2...)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python