浅谈解除装饰器作用(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的id()函数解密过程
Dec 25 Python
python函数局部变量用法实例分析
Aug 04 Python
Python学习思维导图(必看篇)
Jun 26 Python
Python中用post、get方式提交数据的方法示例
Sep 22 Python
浅析Python pandas模块输出每行中间省略号问题
Jul 03 Python
Python 3.x 判断 dict 是否包含某键值的实例讲解
Jul 06 Python
python获取点击的坐标画图形的方法
Jul 09 Python
python3安装crypto出错及解决方法
Jul 30 Python
python list多级排序知识点总结
Oct 23 Python
tensorflow之并行读入数据详解
Feb 05 Python
tensorflow下的图片标准化函数per_image_standardization用法
Jun 30 Python
Python Pillow(PIL)库的用法详解
Sep 19 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 按位与或 (^ 、&)
2013/06/21 PHP
php PDO异常处理详解
2016/11/20 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
基于php解决json_encode中文UNICODE转码问题
2020/11/10 PHP
JavaScript中的noscript元素属性位置及作用介绍
2013/04/11 Javascript
js控制不同的时间段显示不同的css样式的实例代码
2013/11/04 Javascript
Javascript基础教程之关键字和保留字汇总
2015/01/18 Javascript
Jquery 实现弹出层插件
2015/01/28 Javascript
js实现用户离开页面前提示是否离开此页面的方法(包括浏览器按钮事件)
2015/07/18 Javascript
轻量级网页遮罩层jQuery插件用法实例
2015/07/31 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
2015/11/30 Javascript
Bootstrap table分页问题汇总
2016/05/30 Javascript
jQuery中值得注意的trigger方法浅析
2016/12/12 Javascript
如何提高数据访问速度
2016/12/26 Javascript
jQuery序列化后的表单值转换成Json
2017/06/16 jQuery
浅谈React Native 传参的几种方式(小结)
2019/05/21 Javascript
typescript编写微信小程序创建项目的方法
2021/01/29 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python greenlet实现原理和使用示例
2014/09/24 Python
分享Python文本生成二维码实例
2016/01/06 Python
python买卖股票的最佳时机(基于贪心/蛮力算法)
2019/07/05 Python
基于Python的ModbusTCP客户端实现详解
2019/07/13 Python
菲律宾票务网站:StubHub菲律宾
2018/04/21 全球购物
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
面试后的英文感谢信
2014/02/01 职场文书
教师求职信
2014/06/17 职场文书
公司活动总结怎么写
2014/06/25 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
2014年无财产无子女离婚协议书范本
2014/10/09 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书
python爬虫--selenium模块
2021/03/31 Python
Python利用folium实现地图可视化
2021/05/23 Python
JS轻量级函数式编程实现XDM二
2022/06/16 Javascript