解除一个装饰器-python cookbook(第3版)高清中文完整版

时间:2024-06-29 23:06:25
【文件属性】:

文件名称:解除一个装饰器-python cookbook(第3版)高清中文完整版

文件大小:4.84MB

文件格式:PDF

更新时间:2024-06-29 23:06:25

python cookbook 第3版 高清 中文完整版

9.3 解除一个装饰器 问题 一个装饰器已经作用在一个函数上,你想撤销它,直接访问原始的未包装的那个函数。 解决方案 假设装饰器是通过 @wraps (参考9.2小节)来实现的,那么你可以通过访问 __wrapped__ 属 性来访问原始函数: >>> @somedecorator >>> def add(x, y): ... return x + y ... >>> orig_add = add.__wrapped__ >>> orig_add(3, 4) 7 >>> 讨论 直接访问未包装的原始函数在调试、内省和其他函数操作时是很有用的。 但是我们这里 的方案仅仅适用于在包装器中正确使用了 @wraps 或者直接设置了 __wrapped__ 属性的情 况。 如果有多个包装器,那么访问 __wrapped__ 属性的行为是不可预知的,应该避免这样做。 在Python3.3中,它会略过所有的包装层,比如,假如你有如下的代码:


网友评论