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  
    版权声明:本文为博主原创文章,转载请附上博文链接!

  • 相关阅读:
    自研Web漏洞扫描器后的几点思考
    ThinkPHP5.x命令执行漏洞分析
    基于keepalived+nginx+upstream的双master热切换+负载均衡实现方案
    每个看源码的人,都有一颗做“爸爸”的心
    程序员路在何方
    请求页式存储管理实验
    处理机调度实验
    JSP中三种弹出对话框的用法《转》
    Jsp——http status 404 问题
    Jsp——response对象
  • 原文地址:https://www.cnblogs.com/fengff/p/10483285.html
Copyright © 2011-2022 走看看