范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

单例模式概念什么时候能用到单例模式单例模式的好处

  目录
  一、单例模式的概念 类每次实例化的时候都会创建一个新的对象,如果要求类只能被实例化一次该怎么做?
  二、什么时候能用到单例模式?
  三、单例模式的好处 单例模式好处 代码目录结构
  一、单例模式的概念1.类每次实例化的时候都会创建一个新的对象,如果要求类只能被实例化一次该怎么做?
  __new__ 方法是用来创建实例对象的,通过类去创建方法的时候,实际上类自动调用的__new__ 方法。
  调用完 __new__ 方法,创建好对象之后,再把对象交给__init__ 做一个初始化的设置。
  创建一个对象的时候,我们自己不需要调用,我们的这个类自动调用这2个方法。这2个方法叫做魔术方法(因为它们是双下划线开头,双下划线结尾的)。
  这个 __new__ 方法:def __new__(cls.*args,**kwargs):     print("-----new方法-----")     return object.__new__(cls)
  刚才重写之后,感觉重写这个东西还要调用父类的 __new__ 方法,然后将它的结果进行返回,好像没有什么作用。
  单例模式:  就是我们创建一个类,这个类只能被实例化一次,也就是说这个类只能创建出来一个实例对象,这种叫做单例模式。二、什么时候能用到单例模式?
  比如你当前写了个小系统,在系统里有些相关的配置(是整个系统通用的配置),如果把这所有的配置都放在一个类里面存储,这个时候,在程序的任何地方用到的配置都是一样的。
  这个时候,用到的时候,创建一个类,给里面添加一些配置。要修改的时候,再创建一个类,然后添加一些同样的配置,这个时候就是浪费资源。 三、单例模式的好处1.单例模式好处
  不管你实例化多少次,它始终只返回第一次创建的对象。不管你什么时候创建,它始终返回这一个对象。
  比如在这个day_01.py里面实现了一个单例模式: # 1、多个装饰器装饰同一个函数  # 2、python中类里面三个内置的装饰器  # 3、用类实现装饰器 import time def wrapper(func):     def count_time(*args,**kwargs):         print("计算时间的装饰器")         start_time=time.time()         func(*args,**kwargs)         end_time=time.time()         print("函数运行的时间为:{:.5f}".format(end_time-start_time))     return count_time  with open("data/user.txt") as f:     users=eval(f.read())  def login_check(func):     def ado(*args,**kwargs):         print("登录校验的装饰器")         if not users["token"]:             print("-----登录页面-------")             username=input("账号:")             password=input("密码:")             if users["user"] == username and users["pwd"] == password:                 users["token"] =True                 func(*args,**kwargs)         else:             func()     return ado  @login_check # 第二步进行装饰  count_time---->func=login_check(func)    func指向的是ado这个函数 @wrapper  #  第一步进行装饰  func=wrapper(func)  func指向的是count_time这个函数。 def func():     time.sleep(3)     print("这是是需要被装饰器的函数") #  从下往上装饰,从上往下执行 func()  class MyTest(object):      def __init__(self,name):#设置一个初始化属性叫做name         self.name = name        @classmethod  # 被classmethod装饰了之后,该方法就是一个类方法     def add(cls):# cls  代表的是类本身         print("add")         print(cls)      @staticmethod  # 静态方法   实例和类都可以调用     def static():         print("这个是静态方法")      @property  # 设定只读属性     def read_attr(self):         print("这个装饰器装饰完了之后,该方法可以像属性一样被调用")         return  "20岁"      def sub(self):# self 代表的是实例本身         print("sub中的self",self)  # MyTest.static() #类调用  # # t= MyTest("Tester") # 通过name可以访问到这个属性,可以对这个属性进行更改 # t.name="lily" # print(t.name) # t.read_attr="19岁" # print(t.read_attr) # t.static()#实例调用 # t.add() # t.sub()
  给它创建了一个对象,给它添加好了一些配置。
  在day_02.py里没有用到: class MyClass(object):     def __init__(self,name):         self.name=name         print("__init__方法调用了") # 重写下__new__方法     def __new__(cls, *args, **kwargs):         print("这个是new方法")         # 子类里调用下父类的方法,并进行返回         return object.__new__(cls)    m = MyClass("Tester") # print(m.name) # print(m)
  在这里要把实例对象倒过来。
  忘记创建的实例对象叫做什么名字了,记住它的类名就行了。找到定义单例模式的那个类,把那个类倒进来。
  这里再创建一个对象,那么这个对象还是原来那边创建好的对象。原来设置好的属性,这里也全部都有,不需要再全部添加。
  在这里通过 Mytest 创建出来一个对象。
  把day_01.py中代码修改成这样: # 1、多个装饰器装饰同一个函数  # 2、python中类里面三个内置的装饰器  # 3、用类实现装饰器 import time def wrapper(func):     def count_time(*args,**kwargs):         print("计算时间的装饰器")         start_time=time.time()         func(*args,**kwargs)         end_time=time.time()         print("函数运行的时间为:{:.5f}".format(end_time-start_time))     return count_time  with open("../class_03day/data/user.txt") as f:     users=eval(f.read())  def login_check(func):     def ado(*args,**kwargs):         print("登录校验的装饰器")         if not users["token"]:             print("-----登录页面-------")             username=input("账号:")             password=input("密码:")             if users["user"] == username and users["pwd"] == password:                 users["token"] =True                 func(*args,**kwargs)         else:             func()     return ado  @login_check # 第二步进行装饰  count_time---->func=login_check(func)    func指向的是ado这个函数 @wrapper  #  第一步进行装饰  func=wrapper(func)  func指向的是count_time这个函数。 def func():     time.sleep(3)     print("这是是需要被装饰器的函数") #  从下往上装饰,从上往下执行 func()  class MyTest(object):      def __init__(self):#设置一个初始化属性叫做name         pass        @classmethod  # 被classmethod装饰了之后,该方法就是一个类方法     def add(cls):# cls  代表的是类本身         print("add")         print(cls)      @staticmethod  # 静态方法   实例和类都可以调用     def static():         print("这个是静态方法")      @property  # 设定只读属性     def read_attr(self):         print("这个装饰器装饰完了之后,该方法可以像属性一样被调用")         return  "20岁"      def sub(self):# self 代表的是实例本身         print("sub中的self",self)  MyTest.static() #类调用   # t= MyTest("Tester") t= MyTest()  # 通过name可以访问到这个属性,可以对这个属性进行更改 t.name="lily" # print(t.name) # t.read_attr="19岁" print(t.read_attr) # t.static()#实例调用 # t.add() # t.sub()
  去掉一个name属性。
  文件qh_05day_02.py from qh_05day.qh_05day_01 import MyTest t1=MyTest()  class MyClass(object):     def __init__(self,name):         self.name=name         print("__init__方法调用了") # 重写下__new__方法     def __new__(cls, *args, **kwargs):         print("这个是new方法")         # 子类里调用下父类的方法,并进行返回         return object.__new__(cls)    m = MyClass("Tester") # print(m.name) # print(m)
  t1对象会拥有t对象拥有的属性。
  t对象,在这里你给它设置了什么属性。在t1对象那里都有,不需要重新设置了。
  通过MyTest这个类去创建的时候,始终只会返回一个实例。不管你用这个类去创建实例多少次,最终给你返回的始终只有一个对象。就是它第一次创建的那个对象。
  这个类只能实例化一次,只能创建一个实例化对象。  不管你创建多少次,只能一个。2.代码目录结构
  打开文件,我的本地路径是:C:Users18210Desktop所有文件pythonpython_ck01qh_05day

用实力征服更多用户,vivoS12Pro强势登场带来诸多惊喜用颜值打动用户,用实力征服用户。近期推出的vivoS12系列就将这句话践行得非常彻底。其中的vivoS12Pro不仅延续了vivoS系列在设计和影像方面的优势,核心配置更是全面升级做好3点,抢到真理财产品荣耀MagicV折叠旗舰,来试试?前不久,荣耀发布了旗下首款折叠屏旗舰MagicV,也是首款搭载骁龙8gen1的折叠屏旗舰,再加上高大上的颜值,让老Q也动了换手机的心思。荣耀MagicV折叠屏9999极狐和它的高端品质极狐和它的高品质作为北京汽车旗下的独立高端纯电动车品牌,极狐一直以引领智能化的路线在发展,也可谓是闷声做大事的一个品牌。比如极狐品牌与华为联合研发的新一代全球智能驾驶新标杆极狐华为侠侣亲子游APP订单退改易惹纠纷先囤后游还须退改无忧伴游来源中国消费者报以往的大促期间,人们会习惯性地囤积洗发水卫生纸化妆品等各种日用品,可如今每逢大促,人们的购物车里又多了一件新鲜货机票酒店门票等出行类商品。受疫情的影响,在线旅游平台华为MateXRollable卷轴屏曝光,全屏幕设计很大胆,展开秒变平板在寻求智能手机设计差异化的这条道路上,手机厂商们可以说是无所不尽其及,然而现实却是辨识度越来越低,一个创新点会连着用好几代机型,因此折叠屏和卷轴屏近年来开始火起来了。相信此前大家都嵌入式物联网开发从入门到精通会经历些什么过程?简单用一句话概括这个过程就是一看就会,一做就废!这个状态对我来说很痛苦,而且很容易劝退,但是我要时刻警告自己坚持下来,所有的事情,别人能做的,我也能做,只是我现在不知道或者不熟练而百度前搜索总裁向海龙加入传音,担任移动互联总裁来源新浪科技消息称百度前高级副总裁搜索公司总裁向海龙已于近期正式加入出海手机厂商传音控股,数位百度前下属也跟随向海龙加入传音。传音控股今日对新浪科技回应称,确认向海龙加入情况属实,负载均衡算法基本实现最近在比赛一个项目,是给Dubbo写一个负载均衡接口,其实dubbo已经实现了下面四种,所以他做的不是这个单面负载均衡,需要做双向负载均衡,负载均衡的权重取决于服务端,所以有些时候奇怪,SQLnotin没有数据了写了一个下面的SQL语句selectfromun。awherea。idnotin(selectidfromun。b)结果一条数据没有,煞是奇怪,原来是selectidfromun。河南省信息通信行业十四五发展规划正式发布到2025年建成20万个5G基站河南经济报记者孔凡哲到2025年,全省建成5G基站20万个数据中心机架数达到13万架近日,河南省信息通信行业十四五发展规划(以下简称规划)印发,加快构建以通信网络为基础以数据和算力奥运会短视频不能随意播放央视国际向抖音等平台索赔1亿元中国青年报客户端讯(王英鸽中青报中青网记者王烨捷)北京冬奥会开幕在即,随着短视频的快速兴起,不少人将选择在短视频平台上观看冬奥会。奥运会赛事节目受著作权法保护,用户未经授权擅自将赛
我们这一代,减压才是必修课京东裁员上千人,打工人应该清醒了据悉,被裁员工已在京东总部大楼1号楼员工服务中心处等待办理离职手续,有员工的排号单上的数字显示是1000多号。也就是说接到这封名为毕业须知的京东裁员信的人已经有上千人,他们无一例外快递股集体下跌,预计后续将迎来需求反弹记者白帆4月6日,国家邮政局发布邮政快递行业监测数据清明节放假期间(4月3日5日),全国共揽收包裹6。6亿件,比2021年同期下降13。3,比2020年同期增长24。1共投递包裹6QitChain创始人Shoaib博士有效数据聚合器将成为web3。0的关键引擎作者QTCFANSQitChain创始人兼CEOShoaib博士近日在接受专访时表示,QitChain的目标旨在通过构建一个Web3。0的分布式信息聚合器,打造总值高达1万亿美元的Javascript夯实基础1javascript数组定义定义方式1vararrInfonewArray(aa,bb,cc)定义方式2vararrInfonewArray()arrInfo0aaarrInfo1Meta的黑公关,TikTok是好靶子美国华盛顿邮报的那篇Meta付费给共和党公司抹黑TikTok,再次将Meta和TikTok推到了风口浪尖。根据该报道,Facebook的母公司Meta雇佣了一家与共和党关系密切的知新东方投资成立新公司,经营范围含校外托管服务南方财经4月6日电,企查查APP显示,近日,昆明市五华区斯林姆金碧艺术培训学校有限公司成立,法定代表人为杨大伟,注册资本30万元人民币,经营范围包含从事语言能力艺术体育科技等培训的为什么低代码和身份验证必须共存对于希望在数字经济的市场竞争中获胜的企业来说,软件开发已经成为一项关键任务。它越来越多地推动技术创新甚至颠覆行业。然而,构建测试和验证主要代码块通常需要几个月的时间,找到处理这项任微信客服源码如何在用户成本最少的情况下接入自己的系统?背景前面已经说过要做一个将抖音的视频转成图文并保存到自己的文件库的系统。其中有一个比较困扰的点。如何在用户成本最少的情况下,方便地接入到自己的系统中选型当时想到了几种方案,并做了简1。29亿年前恐龙的病态足迹表明其脚趾存在损伤或畸形的情况如果你是一只三趾恐龙,当你的左脚受了重伤且重到足以使它变形那么你会怎么做?大约1。29亿年前,一只兽脚类恐龙(一种吃肉的三趾动物)穿过一个浅水区涉过鱼群并在地上留下了它的脚印。这些什么人适合配用助听器?当听力有下降,到医院就医后仍然无法恢复到正常听力,并还有残余听力的人群都可以考虑助听器,因为每个人的耳道形状和听损程度各有所不同,建议到专来的助听器验配中心进行检测,试听,效果评估论时间的本质,时间会不会只是人类大脑的一种幻觉?时间,看起来如此简单,但它又如此复杂。如果你问身边的人时间到底是什么?很可能会得到各式各样的回答,但没有一个人能给时间一个准确的让人信服的答案。因为直到目前,科学家也并没有定义到底