当前位置: 首页 > news >正文

长沙网站建设哪家好2345网址导航中国最好

长沙网站建设哪家好,2345网址导航中国最好,六安市网站制作,如何做阿里巴巴网站分类目录:《系统学习Python》总目录 在《系统学习Python——装饰器》系列文章中,我们的大多数示例都设计来拦截函数和实例创建调用。这对于装饰器来说很典型,但是它们并不限于这一角色。因为装饰器通过装饰器代码来运行新的函数和类&#xff…

分类目录:《系统学习Python》总目录


在《系统学习Python——装饰器》系列文章中,我们的大多数示例都设计来拦截函数和实例创建调用。这对于装饰器来说很典型,但是它们并不限于这一角色。因为装饰器通过装饰器代码来运行新的函数和类,从而有效地工作,它们也可以用来管理函数和类对象自身,而不只是管理对它们随后的调用。

例如,假设我们需要将被另一个应用程序使用的方法或类注册到一个API上,以便随后处理(可能该API会调用该对象以响应事件)。我们可以提供一个注册函数,在对象定义之后手动地调用该函数,但装饰器使得你的意图更为明显。

这一思路的一种简单实现如下,其中定义了一个装饰器,它既应用于函数也应用于类,并把对象添加到一个基于字典的注册表中。由于它返回对象本身而不是一个包装器,因此它没有拦截随后的调用:

registry = {}
def register(obj):registry[obj.__name__] = objreturn obj@register
def square(x):return x**2@register
def cube(x):return x**3@register
class Eggs:def __init__(self, x):slf.data = xdef __str__(self):return str(self.data)for name in registry:print(name, '=>', registry[name])

输出:

square => <function square at 0x00000267F2E36700>
cube => <function cube at 0x00000267F49B3790>
Eggs => <class '__main__.Eggs'>

当这段代码运行的时候,被装饰的对象按照名称添加到注册表中,但当随后调用它们的时候,它们仍然按照最初的编写方式工作,而没有指向一个包装器层。实际上,我们的对象可以手动运行,或从注册表内部运行。

例如,一个用户界面可能使用这样的技术,为用户动作注册回调处理程序。处理程序可能通过数或类名来注册,就像这里所做的一样,或者可以使用装饰器参数来指定主体事件;包围装饰器的一条额外的def语句可能会用来保持这样的参数以便在装饰时使用。

这个例子是编造的,但是其技术很通用。例如,函数装饰器也可能用来处理函数属性,并且类装饰器可能动态地插人新的类属性,甚至新的方法。考虑如下的函数装饰器一一一它们分配函数属性来记录随后某个API的使用信息,但是它们没有插人一个包装器层来拦截随后的调用:

def decorate(func):func.marked = Truereturn func@decorate
def spam(x, y):return x + yspam.marked

输出:

True

输入:

def annotate(text):def decorate(func):func.label = textreturn funcreturn decorate@annotate('spam data')
def spam(x, y):return x + yspam(1, 1), spam.label

输出:

(2, 'spam data')

这样的装饰器直接扩展了函数和类,但没有捕捉对它们的随后调用。我们将在后面的文章见到多的管理类的类装饰的例子,因为这证明了它已经转向了元类的领域。

参考文献:
[1] Mark Lutz. Python学习手册[M]. 机械工业出版社, 2018.

http://www.hkea.cn/news/528959/

相关文章:

  • 用wps网站栏目做树形结构图网页设计代码案例
  • 多媒体网站设计开发是指什么每日关键词搜索排行
  • 网站 seo正规网络公司关键词排名优化
  • 建立网站赚多少钱seo收录排名
  • 怎么做app网站seo学习网站
  • 广西建设职业技术学院官网免费的seo优化
  • 凡科网电脑版怎么做网站百度知道官网手机版
  • 贵卅省住房和城乡建设厅网站周口seo推广
  • 搭建flv视频网站seo工具查询
  • 企业展示网站 数据库设计模板自助建站
  • 房地产设计师上海seo网络优化
  • wordpress迁移打不开百度seo泛解析代发排名
  • 网站兼容性测试怎么做微信营销软件群发
  • wordpress如何设置内容页seo营销优化
  • 高端大气的网站制作南宁百度seo软件
  • 沙井营销型网站建设成人培训机构
  • 网站没有被百度收录搜索引擎排名优化公司
  • 手机网站转换小程序晋江怎么交换友情链接
  • 专业做网站的公司疫情放开最新消息今天
  • 不用写代码做网站软件长沙优化网站
  • o2o商城网站建设方案广告策划案优秀案例
  • 日照做网站的那家做的好百度网页链接
  • 建设云个人证件查询系统上海seo培训
  • 网站流量提供商杭州seo排名
  • 做装饰工程的在什么网站投标自建站
  • 地球人--一家只做信誉的网站帮忙推广的平台
  • 网站建设外包协议天津网站排名提升
  • 邯郸教育行业网站建设百度推广代理商查询
  • 政府网站有哪些网站seo最新优化方法
  • 做广告牌子seo外链工具