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

成都新都网站开发个人博客网页设计html

成都新都网站开发,个人博客网页设计html,网站建设电脑和手机有区别吗,电信宽带办理一年多少钱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.yidumall.com/news/23324.html

相关文章:

  • 景安做网站教程软文宣传
  • 企业网站建设知名深圳互联网推广公司
  • 用wix做外贸网站百度手机助手app官方下载
  • wordpress主题 直接拖拽式建站网站seo外链平台
  • 深圳做网站多少费用餐饮营销方案
  • 手机网站建设品牌aso安卓优化
  • 政府网站建设会议纪要企业建站公司
  • 好看的网站在哪里好找站长统计网站统计
  • 武冈市住房和城乡建设局网站苏州网站建设公司
  • 网站建设属于那个科目品牌策划方案怎么写
  • 怎么做韩剧网站的翻译淘宝搜索关键词技巧
  • 网站备案 加急整合营销经典案例
  • wordpress wpjson网站关键词排名优化推广软件
  • 企业网网站网站推广seo是什么
  • 网站开发建设类合同智谋网站优化公司
  • 网站开发的英文游戏推广代理app
  • 网站开发包括哪些工作第三方平台推广引流
  • 做3d图的网站有哪些网站优化什么意思
  • wordpress能做社交seo专员是什么
  • 怎么看网站的访问量东莞做网站公司
  • 那个公司建站好武汉网站建设公司
  • 网站建设导航图图库seo上海公司
  • 企业网站页头背景图找人帮忙注册app推广
  • 中国做b2b外贸的网站有哪些友情链接的定义
  • 告状书放网站上怎么做手机营销推广方案
  • 克拉玛依建设局网站竞价软件哪个好
  • 旅游网站策划案如何策划一个营销方案
  • 做电影网站选服务器网络推广渠道有哪些
  • 如何模仿网站模板百度首页的ip地址
  • 物流企业网站源码网站推广手段