浅谈解除装饰器作用(python3新增)


Posted in Python onOctober 15, 2018

一个装饰器已经作用在一个函数上,你想撤销它,直接访问原始的未包装的那个函数。

假设装饰器是通过 @wraps 来实现的,那么你可以通过访问 wrapped 属性来访问原始函数:

>>> @somedecorator
>>> def add(x, y):
...  return x + y
...
>>> orig_add = add.__wrapped__
>>> orig_add(3, 4)
7
>>>

如果有多个包装器:

In [588]: from functools import wraps

In [589]: def decorator1(func):
  ...:  @wraps(func)
  ...:  def wrapper(*args, **kwargs):
  ...:   print ('Decorator 1')
  ...:   return func(*args, **kwargs)
  ...:  return wrapper
  ...: 

In [590]: def decorator2(func):
  ...:  @wraps(func)
  ...:  def wrapper(*args, **kwargs):
  ...:   print ('Decorator 2')
  ...:   return func(*args, **kwargs)
  ...:  return wrapper
  ...: 

In [591]: @decorator1
  ...: @decorator2
  ...: def add(x, y):
  ...:  return x+y
  ...: 

In [592]: add(2,3)
Decorator 1
Decorator 2
Out[592]: 5

In [593]: add.__wrapped__(2, 3)
Decorator 2
Out[593]: 5

In [594]: add.__wrapped__.__wrapped__(2,3)
Out[594]: 5

参考:Python Cookbook

以上这篇浅谈解除装饰器作用(python3新增)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Unittest自动化单元测试框架详解
Apr 04 Python
Python中分支语句与循环语句实例详解
Sep 13 Python
Flask框架web开发之零基础入门
Dec 10 Python
python print输出延时,让其立刻输出的方法
Jan 07 Python
PyQt5实现类似别踩白块游戏
Jan 24 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
详解Python的三种可变参数
May 08 Python
python3使用腾讯企业邮箱发送邮件的实例
Jun 28 Python
python gensim使用word2vec词向量处理中文语料的方法
Jul 05 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
PyTorch在Windows环境搭建的方法步骤
May 12 Python
python 获取剪切板内容的两种方法
Nov 28 Python
python  创建一个保留重复值的列表的补码
Oct 15 #Python
python 美化输出信息的实例
Oct 15 #Python
python  Django中的apps.py的目的是什么
Oct 15 #Python
使用Python监视指定目录下文件变更的方法
Oct 15 #Python
Python调用adb命令实现对多台设备同时进行reboot的方法
Oct 15 #Python
彻彻底底地理解Python中的编码问题
Oct 15 #Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 #Python
You might like
PHP实现的堆排序算法详解
2017/08/17 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
List Installed Hot Fixes
2007/06/12 Javascript
js Flash插入函数免激活代码
2009/03/31 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
动态加载js、css的实例代码
2016/05/26 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
Angularjs中使用指令绑定点击事件的方法
2017/03/30 Javascript
jQuery UI 实例讲解 - 日期选择器(Datepicker)
2017/09/18 jQuery
angular2路由之routerLinkActive指令【推荐】
2018/05/30 Javascript
微信小程序常见页面跳转操作简单示例
2019/05/01 Javascript
Vue最新防抖方案(必看篇)
2019/10/30 Javascript
[00:12]DAC2018 Miracle-站上中单舞台,他能否再写奇迹?
2018/04/06 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
python中使用PIL制作并验证图片验证码
2018/03/15 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
python+ffmpeg批量去视频开头的方法
2019/01/09 Python
浅谈Python 钉钉报警必备知识系统讲解
2020/08/17 Python
Pandas数据分析的一些常用小技巧
2021/02/07 Python
Nike意大利官网:Nike.com IT
2020/01/19 全球购物
卡拉威高尔夫官方网站:Callaway Golf
2020/09/16 全球购物
幼儿园开学家长寄语
2014/01/19 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
综治宣传月活动总结
2014/04/28 职场文书
2014年六一儿童节演讲稿
2014/05/23 职场文书
地方白酒代理协议书
2014/10/25 职场文书
2014年环保工作总结
2014/11/26 职场文书
优秀党员先进事迹材料
2014/12/18 职场文书
慰问信格式
2015/02/14 职场文书
超市店长竞聘书
2015/09/15 职场文书
如何书写民事调解协议书?
2019/06/25 职场文书
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android