我正在尝试编写一个提供输入函数功能的类,但是会记住上次调用的参数,并且只会像字典一样更新它们。到目前为止我有这个,但我很想知道是否有更好的方法:
def func(a):
print a
frozenfunc = freezefunc(func)
frozenfunc.call(a='somevalue')
所以这就是这样的:
frozenfunc.call(a='theupdatedvalue')
打印:somevalue
org.springframework.dao.InvalidDataAccessApiUsageException: ERR operation not permitted; nested exception is redis.clients.jedis.exceptions.JedisDataException: ERR operation not permitted
at org.springframework.data.redis.connection.jedis.JedisExceptionConverter.convert(JedisExceptionConverter.java:44)
打印:theupdatedvalue
有没有这样的东西我找不到?
答案 0 :(得分:2)
特殊方法__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