zoukankan      html  css  js  c++  java
  • Python实现单例模式

    语言是共通的,想要用不同语言实现单例模式,首先要清楚什么是单例模式,单例模式即一个类有且仅有一个实例,那么通过python怎么实现一个类只能有一个实例呢。

    首先先创建一个类,比如宇宙只有一个地球

        class Earth:
            pass
         
        a = Earth()
        print(id(a))
        b = Earth()
        print(id(b))

    运行结果如下:

    通过打印实例的id可以发现,地球类默认创建了两个实例。

    那么怎么能够让类只创建一个实例,而后再创建的实例是返回上一次的对象的引用呢?

    我们了解到,python中,一个类创建对象实例是通过调用父类object的 __new__(cls)方法来创建对象的

    我们可以通过重写 __new__(cls)方法去实现类只创建一个实例

    代码如下:

        class Earth(object):
            __instance=None #定义一个类属性做判断
         
            def __new__(cls):
         
                if cls.__instance==None:
                    #如果__instance为空证明是第一次创建实例
                    #通过父类的__new__(cls)创建实例
                    cls.__instance==object.__new__(cls)
                    return  cls.__instance
                else:
                    #返回上一个对象的引用
                    return cls.__instance
         
        a = Earth()
        print(id(a))
        b = Earth()
        print(id(b))

    运行结果如下:


    可以看出它们id相同,是同一个对象。
    ---------------------  
    作者:筒芋的甜味  
    来源:CSDN  
    原文:https://blog.csdn.net/ctyct_/article/details/79677125  
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    《微风吹过的街道》Alpha冲刺Scrum meeting5
    《微风吹过的街道》Alpha冲刺Scrum meeting4
    小明分蛋糕题解
    小明分蛋糕(附题解)
    正确答案
    阴影面积
    双面打印
    实验十 团队作业6:团队项目用户验收&Beta冲刺
    你说什么都不对【Beta】Scrum meeting 4
    你说什么都不队【Beta】Scrum meeting 3
  • 原文地址:https://www.cnblogs.com/fengff/p/10483285.html
Copyright © 2011-2022 走看看