装饰器装饰函数后恢复原函数名--两种方法
2018-06-09 15:16
555 查看
版权声明:本文为博主原创文章,转载请注明出处: https://blog.csdn.net/qq_31603575/article/details/80633183
装饰器装饰一个函数会改变函数的名字
def set_func(func): def call_func(*args, **kwargs): # 业务代码 print('xx') return func(*args, **kwargs) return call_func @set_func def func_test(): print("func_test") if __name__ == '__main__': print(func_test.__name__) ## result: call_func
方式一:
使用__name__重新赋值
def set_func(func): def call_func(*args, **kwargs): # 业务代码 print('xx') return func(*args, **kwargs) call_func.__name__ = func.__name__ return call_func @set_func def func_test(): print("func_test") if __name__ == '__main__': print(func_test.__name__) ## result: func_test
方式二:
使用functools.wrap()
import functools def set_func(func): @functools.wraps(func) def call_func(*args, **kwargs): # 业务代码 print('xx') return func(*args, **kwargs) return call_func @set_func def func_test(): print("func_test") if __name__ == '__main__': print(func_test.__name__) ## result: func_test阅读更多
相关文章推荐
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
- laravel拓展自定义函数的两种方法
- C++ DLL导出函数的两种方法(导出序号那种方法,别人看不到函数名)
- ASPX保存远程图片到本地的两种方法的函数
- 将四个BYTE数值转换成IEEE754标准的浮点数(两种方法:用Addr函数取字节数字的首地址,或者用Absolute关键字)
- Cisco设备IOS的两种恢复方法
- JavaScript两种方法来定义一个函数
- C++ DLL导出函数的两种方法(导出序号那种方法,别人看不到函数名)
- python函数与方法装饰器
- 处理数组的函数,我们有两种表示方法
- string类的两种实现方法及string的一些成员函数的实现
- 恢复Cisco路由器密码的两种常用方法
- Android 记录和恢复ListView滚动的位置的两种方法
- 定义函数的两种方法:函数表达式和函数声明
- 如何恢复LINUX的引导(两种方法)
- 获取函数返回值的两种方法
- 用SSDT方法恢复冒险岛的部分函数
- python 9-1 如何使用函数装饰器,定义函数装饰器,用来生成一个原函数基础添加新功能的函数,替代原函数
- Python的函数和方法装饰漫谈(Function decorator)
- dojo小例子(15)给dojo on的事件处理函数传递自定义参数的两种方法