Python应用集

❖ Python单例设计模式

2019-01-13  本文已影响0人  Solomon_Xie

参考:黑马程序员教程 - 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中实现单例的设计模式呢?
主要思路如下:

imageimage

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

class MyClass(object):

    instance = None

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

        if cls.instance is None:
            cls.instance = super().__new__(cls)
            
        return cls.instance
上一篇下一篇

猜你喜欢

热点阅读