我们使用装饰器函数后,会导致元数据被覆盖成装饰器函数的元数据,例如__name__,
下例子如果不添加 @wraps(func),则输出结果为wrapper, 我们添加后,输出结果为test

@wraps(func): 相当于 update_wrapper(wrapper,func,WRAPPER_ASSIGNMENTS,WRAPPER_UPDATES)
WRAPPER_ASSIGNMENTS:__name__,__doc__,__module
WRAPPER_UPDATES:__dict__
from functools import update_wrapper,wraps
def mydecorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
'''wrapper'''
func(*args, **kwargs)
print("wrapper")

return wrapper


def test():
'''testtest'''
print("test")


print(mydecorator(test).__name__)

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-24
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2022-02-05
猜你喜欢
  • 2021-04-24
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-24
  • 2021-06-24
  • 2022-12-23
相关资源
相似解决方案