【问题标题】:Python decorator using wraps but name still changes使用包装的 Python 装饰器,但名称仍会更改
【发布时间】:2020-03-10 10:01:46
【问题描述】:

我有以下错误处理程序(实际上是绕过器)装饰器 -

import functools

def exception_safe(*args):
        ErrList = tuple(args)
        def decorator(f):
                @functools.wraps(f)
                def wrapper(*args, **kwargs):
                        if ErrList:
                                try:
                                        result = f(*args, **kwargs)
                                        print(f'No error!')
                                        return result 
                                except ErrList as err:
                                        print(f'got error!')
                        else:
                                try:
                                        result = f(*args, **kwargs)
                                        print(f'No error!')
                                        return result 
                                except Exception as err:
                                        print(f'got error!')
                return wrapper
        return decorator

即使我仍然从我的 pytests 中得到下一个断言错误,告诉我函数名称是“装饰器”:

这可能是什么原因?我真的尝试了一切..

【问题讨论】:

标签: python decorator


【解决方案1】:

exception_safe 需要提供参数,即使没有参数:

@exception_safe()
def function():
猜你喜欢
  • 2014-03-18
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多