Python单例模式实例分析
本文实例讲述了Python单例模式的使用方法。分享给大家供大家参考。具体如下:
方法一
importthreading
classSingleton(object):
__instance=None
__lock=threading.Lock() #usedtosynchronizecode
def__init__(self):
"disablethe__init__method"
@staticmethod
defgetInstance():
ifnotSingleton.__instance:
Singleton.__lock.acquire()
ifnotSingleton.__instance:
Singleton.__instance=object.__new__(Singleton)
object.__init__(Singleton.__instance)
Singleton.__lock.release()
returnSingleton.__instance1.禁用__init__方法,不能直接创建对象。
2.__instance,单例对象私有化。
3.@staticmethod,静态方法,通过类名直接调用。
4.__lock,代码锁。
5.继承object类,通过调用object的__new__方法创建单例对象,然后调用object的__init__方法完整初始化。
6.双重检查加锁,既可实现线程安全,又使性能不受很大影响。
方法二:使用decorator
#encoding=utf-8
defsingleton(cls):
instances={}
defgetInstance():
ifclsnotininstances:
instances[cls]=cls()
returninstances[cls]
returngetInstance
@singleton
classSingletonClass:
pass
if__name__=='__main__':
s=SingletonClass()
s2=SingletonClass()
prints
prints2
也应该加上线程安全
importthreading
classSing(object):
def__init__():
"disablethe__init__method"
__inst=None#makeitso-calledprivate
__lock=threading.Lock()#usedtosynchronizecode
@staticmethod
defgetInst():
Sing.__lock.acquire()
ifnotSing.__inst:
Sing.__inst=object.__new__(Sing)
object.__init__(Sing.__inst)
Sing.__lock.release()
returnSing.__inst
希望本文所述对大家的Python程序设计有所帮助。
热门推荐
10 蛋糕祝老师祝福语简短
11 生日祝福语贺卡文字简短
12 老爸吃饺子祝福语简短
13 老师开工仪式祝福语简短
14 祝福语简短闺蜜文案
15 祝福语赠言给老师简短
16 爸爸爱你祝福语大全简短
17 周年庆典祝福语致辞简短
18 妈妈生日祝福语简短励志