• Python 基于python实现单例模式


    基于python实现单例模式

    by:授客 QQ1033553122

     

    概念

    简单说,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)

     

    例子:

    一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例。

     

    代码

    import threading

     

    class Signleton(object):

        def __init__(self):

            print("__init__ method called")

     

        def __new__(cls):

            print("__new__ method called")

            mutex=threading.Lock()

            mutex.acquire() # 上锁,防止多线程下出问题

            if not hasattr(cls, 'instance'):

                cls.instance = super(LogSignleton, cls).__new__(cls)

            mutex.release()

            return cls.instance

     

    if __name__ == '__main__':

    obj = Signleton()

     

    输出结果:

    >>> ================================ RESTART ================================

    >>>

    __new__ method called

    __init__ method called

    >>> 

     

    说明

    1.从输出结果来看,最先调用 __new__ 方法,然后调用__init__方法

    2. __new__ 通常用于控制生成一个新实例的过程,它是类级别的方法。

    3. __init__ 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性,做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。

  • 相关阅读:
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉树的后序遍历
    从上往下打印二叉树
    栈的压入,弹出序列
    包含min函数的栈
    JS基础知识
    有序列表、无序列表、网页的格式和布局
    样式表(宽度和高度、背景字体、对齐方式边界与边框)
  • 原文地址:https://www.cnblogs.com/shouke/p/10157778.html
Copyright © 2020-2023  润新知