当前位置:主页 > python教程 >

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

发布:2022-10-21 08:58:18 125


本站收集了一篇python3相关的编程文章,网友贡永思根据主题投稿了本篇教程内容,涉及到装饰器、python3相关内容,已被359网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

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

假设装饰器是通过 @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新增)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持码农之家。


相关文章

  • opencv对python3的支持

    发布:2020-01-23

    支持。opencv_python-3.1.0-cp34-cp34m-win_amd64.whl。这就是用于python3.1版本的opencv库。除此之外还有其他版本的就不一一举例了,请网上详查。


  • python3的url编码和解码应用实例

    发布:2020-01-30

    今天小编就为大家分享一篇python3的url编码和解码,自定义gbk、utf-8的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • Python3爬取英雄联盟英雄皮肤图片方法

    发布:2019-06-21

    这篇文章主要介绍了Python3爬取英雄联盟英雄皮肤大图的实例代码,文中较详细的给大家介绍了爬虫思路及完整代码,需要的朋友可以参考下


  • python3字符串输出常见面试题总结

    发布:2022-09-07

    给大家整理一篇关于python 字符串的教程,在本篇文章里小编给大家整理的是一篇关于python3字符串输出常见面试题总结内容,有需要的朋友们可以参考下。


  • python多版本下设置python3为默认的方法

    发布:2019-06-06

    这篇文章主要介绍了如何在双python下设置python3为默认,本文通过一个例子分步骤给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下


  • 详解win7下python3.6安装配置方法步骤

    发布:2020-01-26

    这篇文章主要为大家详细介绍了win7下python3.6安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • python3+PyQt5 自定义窗口部件:使用窗口部件样式表的方法

    发布:2021-04-26

    今天小编就为大家分享一篇python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


  • python3实现ftp服务功能的实例内容

    发布:2021-05-10

    这篇文章主要为大家详细介绍了python3实现ftp服务功能,客户端的相应代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下


  • python3.6如何导入excel里面的数据

    python3.6如何导入excel里面的数据

    发布:2022-09-13

    为网友们分享了关于python3的教程,导入包xlrd模块(先确定python是否安装了xlrd模块),处理数据(获取当前表,并选择表1,或者你改的任何一个名字),处理数据(从表中读取数据,并获取表中数据的行和列),输出数据(pr


  • python3.4用函数操作mysql5.7方法

    发布:2020-05-05

    1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 # __author__ =


网友讨论