首页 > 编程语言 > 详细

Python——单例设计模式

时间:2019-04-06 17:17:25      阅读:122      评论:0      收藏:0      [点我收藏+]

单例设计模式:

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

使用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——单例设计模式

原文:https://www.cnblogs.com/Jery-9527/p/10662020.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!