栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

设计模式之单利模式

Python 更新时间:发布时间: 百科书网 趣学号

单利模式的两种实现方式:

class Singleton(object):
    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 not Singleton.init_flag:
            print("生成对象后先调用===init===")
            Singleton.init_flag = True


s1 = Singleton()
print(id(s1))
s2 = Singleton()
print(id(s2))

结果:
生成对象后先调用===init===
1933634897288
1933634897288
class Singleton(object):
    instance = None

    def __new__(cls):
        if cls.instance is None:
            cls.instance = super().__new__(cls)
            print("1:__new__")
        else:
            print("2:__new__")
        return cls.instance

    def __init__(self):
        print("__init__")


ob1 = Singleton()
ob2 = Singleton()
print(id(ob1))
print(id(ob2))
结果:
1:__new__
__init__
2:__new__   # 第一次生成对象以后,再次调用时,就会走else后面的分支,因为已经生成对象了,
__init__     # 对象只生成一次,但是每次都得初始化,因此每个对象进来后都得调用__init__方法
2284560708664
2284560708664
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/280574.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号