冻结函数参数
Freezing Function Arguments
我正在尝试编写一个 class 来提供输入函数的功能,但会记住上次调用的参数,并且只会像字典一样更新它们。到目前为止我已经有了这个,但我很想知道是否有更好的方法:
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
我正在尝试编写一个 class 来提供输入函数的功能,但会记住上次调用的参数,并且只会像字典一样更新它们。到目前为止我已经有了这个,但我很想知道是否有更好的方法:
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