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

动态做网站绵阳高端网站建设

动态做网站,绵阳高端网站建设,申请了域名先做网站还是先备案,成都制作网站工作室1 python类装饰器编写单体类 类装饰器用于装饰类,用于管理类自身,或用于管理实例创建调用。 单体类,不管创建多少次实例,都只有一个实例的类。可以通过类装饰器管理装饰类的全部实例,实现单体类。 1.1 字典存放单体…

1 python类装饰器编写单体类

类装饰器用于装饰类,用于管理类自身,或用于管理实例创建调用。

单体类,不管创建多少次实例,都只有一个实例的类。可以通过类装饰器管理装饰类的全部实例,实现单体类。

1.1 字典存放单体类

描述

通过类装饰器创建的类实例存放在全局字典,实现单体类。

(1) 定义全局字典instances;

(2) 类作为字典键,实例为字典值,不存在则创建,否则返回;

(3) 嵌套函数定义类装饰器,入参为类cls,返回可调用函数;

示例

>>> instances={}
>>> def getInstance(cls,*args):if cls not in instances:instances[cls]=cls(*args)return instances[cls]>>> def singlecls(cls):def onCall(*args):return getInstance(cls,*args)return onCall>>> @singlecls
class Clerk:def __init__(self,name,rate,days):self.name=nameself.rate=rateself.days=daysdef pay(self):return self.rate*self.days>>> @singlecls
class TestSingleCls:def __init__(self,val):self.attr=val>>> C1=Clerk('梯阅线条',2000,22)
>>> c2=Clerk('tyxt',2100,23)
>>> C1.name,C1.pay()
('梯阅线条', 44000)
>>> c2.name,c2.pay()
('梯阅线条', 44000)
>>> tsc1=TestSingleCls(9555)
>>> tsc2=TestSingleCls(9556)
>>> tsc1.attr,tsc2.attr
(9555, 9555)
>>> id(C1),id(c2)
(11409136, 11409136)
>>> id(tsc1),id(tsc2)
(11410160, 11410160)

1.2 nonlocal单体类

描述

通过嵌套函数的作用域来创建单体类。装饰的每个类使用各自的封闭作用域。

(1) 定义嵌套变量instance为None;

(2) 通过nonlocal为instance赋值,如果为None则创建实例,否则返回实例;

(3) 嵌套函数定义类装饰器,入参为类cls,返回可调用函数;

示例

>>> def singlecls(cls):instance=Nonedef onCall(*args):nonlocal instanceif instance is None:instance=cls(*args)return instancereturn onCall>>> @singlecls
class Clerk:def __init__(self,name,rate,days):self.name=nameself.rate=rateself.days=daysdef pay(self):return self.rate*self.days>>> C1=Clerk('梯阅线条',2000,22)
>>> C2=Clerk('tyxt',2100,23)
>>> id(C1)==id(C2),id(C1),id(C2)
(True, 11503152, 11503152)
>>> C1.name,C2.name
('梯阅线条', '梯阅线条')

1.3 可调用类实例实现单体类

描述

通过可调用类实例的装饰器实现单体类。

(1) 实例属性instance初始化为None;

(2) 如果instance为None则创建实例,否则返回实例;

(3) 定义可调用类实例,返回装饰类的实例;

示例

>>> class SingleCls:def __init__(self,cls):self.cls=clsself.instance=Nonedef __call__(self,*args):if self.instance is None:self.instance=self.cls(*args)return self.instance>>> @SingleCls
class Clerk:def __init__(self,name,rate,days):self.name=nameself.rate=rateself.days=daysdef pay(self):return self.rate*self.days>>> C1=Clerk('梯阅线条',2000,22)
>>> C2=Clerk('tyxt',2100,23)
>>> id(C1)==id(C2),id(C1),id(C2)
(True, 11615440, 11615440)
>>> C1.name,C2.name
('梯阅线条', '梯阅线条')
http://www.yayakq.cn/news/958877/

相关文章:

  • 做网站有用吗自己做的视频可以传别的网站去吗
  • 湛江做寄生虫网站wordpress拼音tag插件
  • 做淘宝客为什么要做网站网页游戏代理平台
  • 网站分类有哪些网站开发与实训报告
  • h5网站显示的图标怎么做的北京公司注册查询
  • 简单房地产网站一键装修效果图软件
  • 简述网站制作基本流程个体户怎么注册商标
  • 宜昌网站建设厂家企业年金办法
  • wordpress微信网站模板合肥城市建设网站
  • 网站的数据库怎么做软件技术学的是什么
  • 有哪些单页网站梵克雅宝项链官网价格图片
  • 怎么用ftp清空网站深圳网站建设定制
  • 聊城专业网站建设制作网页制作与网站建设思维导图
  • 宁波网站备案幕布拍照公司如何申请网址
  • 做片头 网站wordpress 发货
  • 临沂网站建设哪家好wordpress 添加用户组
  • 中国电信新建网站备案管理系统 录完信息wordpress注入工具
  • 企业网站制作一般多少钱佛山网站建设哪家专业
  • 网站设计前期沟通单wordpress文件下载漏洞
  • 网站备案模板网站搭建心得
  • 休闲小零食网站开发方案wordpress小工具文件
  • 促销型网站用户浏览网站的习惯
  • wordpress 建站完整视频教程网站正建设中
  • 杭州市富阳区建设局网站网站按内容分可以分为
  • site网站连通率0%怎么解决有什么做网兼的网站
  • 重庆网站建设 优化wordpress 防注册
  • 公司网站登陆后台管理中心不能修改前台主页太原做网站联系方式
  • 购物网站开发内容阿里云1m宽带做网站卡吗
  • 网站美工和平面设计师网站建设免费视屏教程
  • 四川建设厅网站怎么进不去成都网络营销推广公司哪家好