装饰器中的意外关键字arg:Python

时间:2017-12-06 11:29:20

标签: python eclipse decorator

我遇到了eclipse和我的python装饰器的问题。 我使用装饰器自动管理通信错误。 当我使用装饰器时,默认情况下,装饰器将获得装饰函数的错误,如果不正常,则引发异常。

def error_handling_decor_2(function):

    @wraps(function)
    def wrapper(*args, **kwargs):

        catch_error = kwargs.get('catch_error', True)
        kwargs.pop('catch_error', None)

        (ret_val, error_val) = function(*args, **kwargs)

        if catch_error:
            if error_val == 'OK':
                return ret_val
            else:
                raise Exception('Problem')
        else:
            # return without any processing
            return ret_val, error_val

    return wrapper

因此,如果我希望装饰函数返回带有(ret_val, error)的元组,我必须传递参数:catch_error=False

一切正常,唯一的问题是eclipse在编辑器上显示错误:Passing unexpected keyword argument 'catch_error' in function call

这是正确的,方法调用没有参数catch_error,但装饰器确实处理它。

有没有人有想法避免看到这个错误?

0 个答案:

没有答案