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)

 

posted @ 2019-04-06 16:05  铃铃铃  阅读(98)  评论(0编辑  收藏  举报