python - 使用包装的 Python 装饰器,但名称仍会更改
问题描述
我有以下错误处理程序(实际上是绕过程序)装饰器 -
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 中得到下一个断言错误,告诉我函数名称是“装饰器”:
这可能是什么原因?我真的尝试了一切..
解决方案
exception_safe
需要给出参数,即使没有:
@exception_safe()
def function():
推荐阅读
- r - 基于R中的模拟数据计算均方预测误差
- amazon-web-services - AWS Lambda:如何从配置中删除环境变量
- codeigniter - 错误 codeigniter 为同一用户生成多个会话
- c# - VB.Net 到 C# 的转换
- google-cloud-platform - 在谷歌云中,从 VM 终端(ssh 或 telnet)中找到 VM 的临时 IP 地址
- sql - 如何在 MS Access 中将字段更改为 SSN 格式(###-##-####)?
- twitter-bootstrap-3 - Bootstrap 表和 Bootstrap 4 支持
- reactjs - 如何向 TablePagination ActionComponent 添加自定义道具?
- jquery - jquery 插件 - asRange / 我要竖条
- c++ - 如何在 C++ 中覆盖向量的运算符