码迷,mamicode.com
首页 > 编程语言 > 详细

Python——单例设计模式

时间:2019-04-06 16:46:23      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:模式   alt   style   pre   height   设计模式   内置函数   size   属性   

单例设计模式:

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

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

标签:模式   alt   style   pre   height   设计模式   内置函数   size   属性   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!