zoukankan      html  css  js  c++  java
  • 装饰器函数导致的原函数的元数据被替代--保存元数据

    我们使用装饰器函数后,会导致元数据被覆盖成装饰器函数的元数据,例如__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__)
  • 相关阅读:
    表单控件和属性
    html5语义化标签
    移动布局
    webpack
    OMobile
    Npm的下载 安装 管理工具
    模块化开发
    百度地图
    离线缓存
    canvas和svg
  • 原文地址:https://www.cnblogs.com/LinuxSuDa/p/8296536.html
Copyright © 2011-2022 走看看