Попытка переписать декоратор как 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).






Вы должны принять callback в качестве параметра в методе Check вашего класса __init__, чтобы ваша функция wrapper действительно могла ссылаться на него как на функцию обратного вызова:
class Check(object):
def __init__(self, callback):
self.callback = callback
def __call__(self, func):
return self.__param__call__(func)
def __param__call__(self, func):
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
cb_result = self.callback()
return result
return wrapper