python单例模式有什么用,python的实例
单例模式(单例模式)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。
单例模式
a、单例模式分为四种:文件,类,基于__new__方法实现单例模式,基于metaclass方式实现。
b、类实现如下:
分类符号(对象):
进口时间
def__init__(self):
时间。睡眠(1)
@classmethod
定义实例(cls,*args,**kwargs)
ifnothasattr(Sigletion, _instance):
信号. instance=Sigletion(*args,**kwargs)
returnSigletion ._实例
导入线程
daftask(arg):
obj=Sigletion.instance()
打印(对象)
(10):
t=螺纹。线程(target=task,args=[i,])
启动()相关推荐: 《Python免费入门教程》
c、基于__new__方法实现单例模式
进口时间
导入线程
classSingleton(object):
_ instance _ lock=线程。锁定()
def__init__(self):
及格
def__new__(cls,*args,**kwargs):
ifnothasattr(Singleton, _instance):
用单身者._instance_lock:
ifnothasattr(Singleton, _instance):
单身. instance=对象__new__(cls,*args,**kwargs)
returnSingleton ._实例
obj1=Singleton()
obj2=Singleton()
打印(obj1,obj2)
deftask(arg):
obj=Singleton()
打印(对象)
(10):
t=螺纹。线程(target=task,args=[i,])
开始()d、基于metaclass方式实现单例模式
1、对象是类创建,创建对象时候类的__init__方法自动执行,对象()执行类的__呼叫_ _方法。
2、类是类型创建,创建类时候类型的__init__方法自动执行,类() 执行类型的__呼叫_ _方法(类的__新_ _方法,类的__init__方法)。
#第0步:执行类型的__init__方法【类是类型的对象】
classFoo:
def__init__(self):
及格
def__call__(self,*args,**kwargs):
及格
#第一步:执行类型的__呼叫_ _方法
#1.1调用富(中国姓氏)类(是类型的对象)的__新_ _方法,用于创建对象。
#1.2调用富(中国姓氏)类(是类型的对象)的__init__方法,用于对对象初始化。
obj=Foo()
#第2步:执行Foodef _ _ call _ _方法
obj()
导入线程
classSingletonType(类型):
_ instace _ lock=线程。锁定()
def__call__(cls,*args,**kwargs):
ifnothasattr(cls, _instance):
withSingletonType ._instace_lock:
ifnothasattr(cls, _instance):
cls ._instance=super(SingletonType,cls).__call__(*args,**kwargs)
returncls ._实例
classFoo(元类=SingletonType):
def__init__(self,name):
self.name=name
obj1=Foo(name )
obj2=Foo(name )
打印(obj1,obj2)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。