我可以在类方法和静态方法上使用相同的装饰器吗?

时间:2016-05-12 19:25:58

标签: python python-decorators

我有一个装饰器,我在一些类方法上使用。看起来像这样

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

我想在类之外使用那个装饰器,有没有办法在不重新定义和手动排除self参数的情况下完成它?

1 个答案:

答案 0 :(得分:0)

由于您未使用self,因此可以将其包含在可选的参数中:

    @wraps(method)
    def caller_wrapper(*args, **kwargs):
        ...
        return method(logger=logger, *args, **kwargs)