【发布时间】:2016-07-24 05:12:27
【问题描述】:
假设我有一些很长的函数 module.my_function 是这样的:
def my_function(param1,param2,param3='foo',param4='bar',param5=None,...)
带有大量的args和关键字args。我希望这个函数既可以用作模块module 的一部分,也可以用作myClass 的类方法。该函数的代码将保持完全相同,但在myClass 中,一些关键字参数可能采用不同的默认值。
这样做的最佳方法是什么?以前我在做类似的事情:
class myCLass(object):
def __init__(self,...
def my_function(self, param1,param2,param3='hello',param4='qaz',param5=['baz'],...):
module.my_function(param1,param2,param3=param3,param4=param4,param5=param5,...)
将所有这些论点写这么多次似乎有点愚蠢,尤其是在大量论点的情况下。我也考虑过在类方法中做类似module.my_function(**locals()) 的事情,但我不确定如何处理self 参数,我不知道这是否会导致其他问题。
我可以直接复制粘贴函数的整个代码,但这似乎不是很有效,因为改变的只是一些默认值,my_function 的代码是 very长。有什么想法吗?
【问题讨论】:
-
是否所有关键字 args 都必须是明确的,而您不能只使用 kwargs?
-
原因可能是我没有太多经验的编码器......在这种情况下我将如何使用 kwargs 并将一些默认值设置为不同的值?说上面示例中的 3-5 是我要更改的那些.. 我是否只需指定参数 1-5 并使用 kwargs 其余部分?
标签: python function class methods