试图将装饰程序重写为Class
并没有按预期工作。我真正的装饰师是:
def check(callback):
def decorator(function):
def wrapper(*args, **kwargs):
result = function(*args, **kwargs)
cb_result = callback()
return result
return wrapper
return decorator
我对课堂形式的看法是
class Check(object):
def __init__(self, *args, **kwargs):
self._args = args
self._kwargs = kwargs
def __call__(self, *call_args, **call_kwargs):
function = call_args[0]
return self.__param__call__(function)
def __param__call__(self, function):
def wrapper(*args, **kwargs):
result = function(*args, **kwargs)
cb_result = callback()
return result
return wrapper
我希望使用装饰器:
@Check(callback=a_function_callback)
def my_function():
...
当我把它重写为一个类时,我的错误是什么?我还一直在努力保持向后兼容性(又称python2.7兼容性)
您应该接受
callback
作为Check
类__init__
方法中的参数,这样wrapper
函数就可以实际引用它作为回调函数:相关问题 更多 >
编程相关推荐