首页
学习
活动
专区
工具
TVP
发布

装饰器详解

装饰器是用于改变函数或类的行为的一种方法。装饰器的用法类似如下:

包装的只是语法糖的代表 。我们知道在 Python 中,函数和类(类型除外)都是对象,也就是说它们可以:

分配给某个变量

复制

作为参数传递给其他函数

前面的语法实际等同于:

你可能想知道是如何定义的:

我们假设自己有一个从 URL 访存已提取数据的函数。我们从中访存数据的服务器具备调节机制,如果它检测到在相同时间间隔内从某个 IP 地址传入大量请求,就会进行调节。所以,为了让提取器像人类一样,我们愿意等待随机长度的时间,然后再提交请求以欺骗服务器。 能否使装饰器也做到这样?我们来看一下:

你对和装饰器可能有点陌生。如果你仔细查看就会发现,与我们前面定义的类似。中的另一层包装也支持将参数传递到装饰器(和)。是个不错的装饰器,可以复制的元数据(比如名称、文档字符串以及函数属性)。如果不使用这些,我们就无法从等函数调用获得有用的结果,因为在这种情况下,它会返回而不是的文档字符串和信息。

但是,如果我们拥有类以及多个此类函数会怎样:

一种选择就是使用单独包装所有函数。但我们可以做得更好:我们可以创建一个类装饰器。方法就是遍历类名称空间,确定函数,然后通过装饰器包装这些函数。

现在,你可以使用包装整个类。但是,如果存在多个 scraper 类或者的多个子类会怎样?您可以对这些类单独使用,或者在这种情况下,也可以创建元类。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180819G0NIPL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券