美文网首页Python应用集
❖ Python单例设计模式

❖ Python单例设计模式

作者: Solomon_Xie | 来源:发表于2019-01-13 03:07 被阅读0次

参考:黑马程序员教程 - Python基础 面向对象

单例指一个对象只生成一个实例,也就是说对象只会在内存中分配一块区域。比如Music player,一次只能播放一个歌曲,只分配一块内存给它,不能同时播放两首歌。只有当它销毁了,才会生成一个空间给另一首歌。

imageimage

要想达到单例这种效果、这种设计模式,就需要涉及内存分配问题。既然涉及到内存分配问题,就需要用到对象的内置函数中涉及内存分配的__new__函数来完成。

__new__方法有两个作用:

  • 在内存中为对象分配空间
  • 返回对象的引用

而实现单例设计模式,就是对__new__方法的重写

重写new方法时需要注意:

imageimage

如果没有在重写new时候返回对象引用,那么在生成实例时,就只能得到一个None

重写单例对象的new方法的固定格式(必须要遵守):

def __new__(cls, *args, **kwargs):
    # Your code
    # ........
    # ........

    # Return the generated instance of the object
    return super().__new__(cls)

如果在new中实现单例的设计模式呢?
主要思路如下:

  • 添加一个类属性
  • 将这个类属性的初始值为None
  • 如果有实例被创建,这个类属性就为
  • 再有实例被创建时,如果发现类属性为None,则不创建,且返回之前已创建的实例
imageimage

代码如下(非常固定,没什么需要改的):

class MyClass(object):

    instance = None

    def __new__(cls, *args, **kwargs):

        if cls.instance is None:
            cls.instance = super().__new__(cls)
            
        return cls.instance

相关文章

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • 基础-单例模式

    单例模式总结-Python实现 面试里每次问设计模式,必问单例模式 来自《Python设计模式》(第2版) 1.理...

  • Python 面向对象7: 单例模式

    一、内容 1.1、单例设计模式 1.2、__new__方法 1.3、Python 中的单例 二、单例设计模式 2....

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • python单例模式

    Python单例模式 单例模式 单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。...

  • python 的单例模式

    python设计模式中的 单例模式:单例模式可以通过__new__ 方法实现,而__new__ 方法一般用于继承不...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

网友评论

    本文标题:❖ Python单例设计模式

    本文链接:https://www.haomeiwen.com/subject/yhfirqtx.html