【发布时间】:2019-02-20 22:40:33
【问题描述】:
尝试将装饰器重写为 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():
...
在将它重写为一个类时我的错误是什么,我也一直在努力保持向后兼容性(也就是 Python 2.7 合规性)。
【问题讨论】:
标签: python class python-decorators