Python中单例模式总结

Python中单例模式总结,第1张

概述一、单例模式   a、单例模式分为四种:文件,类,基于__new__方法实现单例模式,基于metaclass方式实现

一、单例模式

    a、单例模式分为四种:文件,类,基于__new__方法实现单例模式,基于Metaclass方式实现

    b、类实现如下:

class Sigletion(objects):  import time  def __init__(self):    time.sleep(1)  @classmethod  def instance(cls,*args,**kwargs)    if not hasattr(Sigletion,'_instance'):      Sigletion._instance=Sigletion(*args,**kwargs)    return Sigletion._instanceimport threadingdaf task(arg):  obj=Sigletion.instance()  print(obj)for i in range(10):  t=threading.Thread(target=task,args=[i,])  t.start()

    c、基于__new__方法实现单例模式

import timeimport threadingclass Singleton(object):  _instance_lock=threading.Lock()  def __init__(self):    pass  def __new__(cls,**kwargs):    if not hasattr(Singleton,"_instance"):      with Singleton._instance_lock:        if not hasattr(Singleton,"_instance"):          Singleton._instance=object.__new__(cls,**kwargs)    return Singleton._instanceobj1=Singleton()obj2=Singleton()print(obj1,obj2)def task(arg):  obj = Singleton()  print(obj)for i in range(10):  t = threading.Thread(target=task,])  t.start()

    d、基于Metaclass方式实现单例模式

"""
1.对象是类创建,创建对象时候类的__init__方法自动执行,对象()执行类的 __call__ 方法
2.类是type创建,创建类时候type的__init__方法自动执行,类() 执行type的 __call__方法(类的__new__方法,类的__init__方法)

# 第0步: 执行type的 __init__ 方法【类是type的对象】class Foo:  def __init__(self):    pass  def __call__(self,**kwargs):    pass# 第1步: 执行type的 __call__ 方法#    1.1 调用 Foo类(是type的对象)的 __new__方法,用于创建对象。#    1.2 调用 Foo类(是type的对象)的 __init__方法,用于对对象初始化。obj = Foo()# 第2步:执行Foodef __call__ 方法obj()"""import threadingclass SingletonType(type):  _instace_lock=threading.Lock()  def __call__(cls,**kwargs):    if not hasattr(cls,"_instance"):      with SingletonType._instace_lock:        if not hasattr(cls,"_instance"):          cls._instance = super(SingletonType,cls).__call__(*args,**kwargs)    return cls._instanceclass Foo(Metaclass=SingletonType):  def __init__(self,name):    self.name=nameobj1 = Foo('name')obj2 = Foo('name')print(obj1,obj2)

您可能感兴趣的文章:Python设计模式之单例模式实例常见的在Python中实现单例模式的三种方法5种Python单例模式的实现方式python单例模式实例分析详解python单例模式与metaclassPython单例模式实例详解 总结

以上是内存溢出为你收集整理的Python中单例模式总结全部内容,希望文章能够帮你解决Python中单例模式总结所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1200537.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存