如何将 **kwargs 从 class 方法传递给函数
how to pass **kwargs to a function from a class method
我需要为机器学习管道创建自定义转换器 class。 testfun
实际上是一个通过 rpy2 访问的 R 函数。 testfun
然后在 test
内部使用 class。
我想公开由 testfun
表示的 R 函数的所有参数,因此 **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)
你的测试函数应该是这样的..
def testfun(**kwargs):
... fetch each value using loop or similar...
像那样调用testfun..
testfun(a=1,b=2...)
这里可以这样操作
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()
我需要为机器学习管道创建自定义转换器 class。 testfun
实际上是一个通过 rpy2 访问的 R 函数。 testfun
然后在 test
内部使用 class。
我想公开由 testfun
表示的 R 函数的所有参数,因此 **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)
你的测试函数应该是这样的..
def testfun(**kwargs):
... fetch each value using loop or similar...
像那样调用testfun..
testfun(a=1,b=2...)
这里可以这样操作
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()