浅谈解除装饰器作用(python3新增)
作者:晓东邪 发布时间:2022-05-30 03:31:52
标签:装饰器,python3
一个装饰器已经作用在一个函数上,你想撤销它,直接访问原始的未包装的那个函数。
假设装饰器是通过 @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
来源:https://blog.csdn.net/xiaodongxiexie/article/details/77530546


猜你喜欢
- 一、基本结构语句一)、条件语句age = int(input("请输入你家狗狗的年龄: "))print("&
- 目的对字符串的每个字符进行处理,其实每个字符(Char)就是一个长度为1的字符串。方法1.使用内建函数list()>>>
- 目录引用dll静态类定时器启动备份代码总结引用dllmysql.data.dll是MySQL数据库中一款必备的驱动文件,主要用于.net编程
- 任务:用python时间简单的统计任务-统计男性和女性分别有多少人。用到的物料:xlrd 它的作用-读取excel表数据代码:import
- 将一个列表数据写入output.xlsx的a,b,c……等sheet中import pandas as pddf1 = pd.DataFra
- python内存管理机制:引用计数垃圾回收内存池1. 引用计数当一个python对象被引用时 其引用计数增加 1 ; 当其不再被变量引用时
- 1. 建立与SQLite数据库的连接SQLite是python自带的一款基于内存或硬盘的、开源的、关系型的轻量级数据库。这意味着无需下载安装
- 触发器权限和所有权CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner
- 图中图准备数据import matplotlib.pyplot as pltfig = plt.figure()x = [1, 2, 3,
- 本人已经在运维行业工作了将近十年,我最早接触Linux是在大二的样子,那时候只追求易懂,所以就选择了Ubuntu作为学习、使用的对象,它简单
- 除了使用xshell等连接服务器以外,pycharm也可以连接服务器,在服务器上运行代码,上传下载文件等操作。步骤如下:1、pycharm工
- 本文实例为大家分享了python opencv旋转图像的具体代码,保持图像不被裁减,供大家参考,具体内容如下# -*- coding:gb2
- 1. dataloader() 初始化函数def __init__(self, dataset, batch_size=1, shuffle
- SPI是一种JDK提供的加载插件的灵活机制,分离了接口与实现,就拿常用的数据库驱动来说,我们只需要在spring系统中引入对应的数据库依赖包
- 以下所有例子中结构定义如下:type User struct { Id_ bson.ObjectId `bson:
- 在一些网页应用中,就比如在投票系统中,当我们进行的是多项投票时,我们要求用户最多只能选择几项进行投票,这也是就是说选择复选框的个数最多几个.
- 目录1 Python变量概述2 Python变量的命名3 Python变量赋值3.1 Python赋值概述3.2 Python变量的基本格式
- TensorFlow官网给的cifar-10教程,是卷积神经网络入门的好例子,有时想直接拿这个模型来跑自己的数据,却发现他的数据类型不是常见
- 分形,具有以非整数维形式充填空间的形态特征。通常被定义为“一个粗糙或零碎的几何形状,可以分成数个部分,且每一部分都(至少近似地)是整体缩小后
- 建表CREATE TABLE `map` ( `id` int(11) NOT NULL, `address` varchar(255) N