我可以在 class 方法和静态方法上使用相同的装饰器吗?
Can I use the same decorator on a class method and on a static method?
我有一个用于某些 class 方法的装饰器。看起来像这样
def api_caller(logger_name):
def api_caller_decorator(method):
@wraps(method)
def caller_wrapper(self, *args, **kwargs):
logger = log_wrap(logger_name)
kwargs['api'] = create_api_instance(kwargs['api'])
logger.info('worker authenticated')
return method(self, logger=logger, *args, **kwargs)
return caller_wrapper
return api_caller_decorator
我想在 class 之外使用那个装饰器,有没有办法在不重新定义和手动排除 self
参数的情况下做到这一点?
由于您没有使用 self
,您可以将其包含在可选参数中:
@wraps(method)
def caller_wrapper(*args, **kwargs):
...
return method(logger=logger, *args, **kwargs)
我有一个用于某些 class 方法的装饰器。看起来像这样
def api_caller(logger_name):
def api_caller_decorator(method):
@wraps(method)
def caller_wrapper(self, *args, **kwargs):
logger = log_wrap(logger_name)
kwargs['api'] = create_api_instance(kwargs['api'])
logger.info('worker authenticated')
return method(self, logger=logger, *args, **kwargs)
return caller_wrapper
return api_caller_decorator
我想在 class 之外使用那个装饰器,有没有办法在不重新定义和手动排除 self
参数的情况下做到这一点?
由于您没有使用 self
,您可以将其包含在可选参数中:
@wraps(method)
def caller_wrapper(*args, **kwargs):
...
return method(logger=logger, *args, **kwargs)