我正在尝试编写一个类,它提供输入函数的功能,但会记住上次调用的参数,并且只会像字典一样更新它们。到目前为止我已经做到了,但我很想知道是否有更好的方法:
class freezefunc:
def __init__(self, func, **funcargs):
self.func = func
self.funcargs = {}
def call(self, **kwargs):
self.funcargs.update(kwargs)
self.func(**self.funcargs)
所以它的工作原理如下:
def func(a):
print a
frozenfunc = freezefunc(func)
frozenfunc.call(a='somevalue')
打印:某个值
frozenfunc.call(a='theupdatedvalue')
打印:更新值
有类似的东西我还没找到吗?
最佳答案
特殊方法__call__
可让您直接调用frozenfunc
:
class freezefunc:
def __init__(self, func, **funcargs):
self.func = func
self.funcargs = {}
def __call__(self, **kwargs):
self.funcargs.update(kwargs)
return self.func(**self.funcargs)
def func(a):
print(a)
现在:
frozenfunc = freezefunc(func)
frozenfunc(a='somevalue')
打印:
somevalue
和:
frozenfunc(a='theupdatedvalue')
打印:
theupdatedvalue
关于python - 卡住函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34200717/