Python——单例设计模式

Posted Talk is cheap, just do IT...

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python——单例设计模式相关的知识,希望对你有一定的参考价值。

单例设计模式:

让类创建的对象,在系统中只有唯一的实例,

使用python类内置的__new__()方法实现,__new__()方法在创建对象时会被自动调用,通过重写__new__()方法,使得无论用类型创建多少个对象,内存中都只创建一个对象的实例,此时__new__()方法必须返回此内置函数的调用,及return super().__new__(cls)

 

class MyClass():
    # 类属性,记录第一个被创建对象的引用
    instance = None

    def __new__(cls, *args, **kwargs):
        if cls.instance is None:
            cls.instance = super().__new__(cls)
        return cls.instance

    def __init__(self):
        print("初始化方法!")


a = MyClass()
print(a)
b = MyClass()
print(b)

 

若想使得初始化动作只执行一次:

class MyClass():
    # 类属性,记录第一个被创建对象的引用
    instance = None
    # 记录是否执行过初始化动作
    init_flag = False
    def __new__(cls, *args, **kwargs):
        if cls.instance is None:
            cls.instance = super().__new__(cls)
        return cls.instance

    def __init__(self):
        if MyClass.init_flag:
            return
        print("初始化方法!")
        MyClass.init_flag = True

a = MyClass()
print(a)
b = MyClass()
print(b)

 

以上是关于Python——单例设计模式的主要内容,如果未能解决你的问题,请参考以下文章

python中的单例设计模式

Python 单例设计模式

常用代码片段

常用代码片段

Python面向对象之单例模式

一日一技:Python 下面最简单的单例模式写法