page contents

单例模式就是这么简单

单例模式就是一个类只创建一个实例,或者做了多次创建,也实际只生成一个实例。那要如何设置呢,有什么什么统一的套路呢?看了这篇文章就知道了。

#1. 设置单例模式的本质:

1.判断这个实例是否存在;

2.如果存在,则返回这个实例对象的引用;如果不存在,则创建这个实例对象。


#2.单例模式实现的5种方法:

1>.通过__new__实现

2>.通过@classmethod

3>.通过装饰器实现

4>.通过导入模块时实现

5>.通过元类实现。

 

#3.使用 __ new __ (推荐使用)

# 在__new__判断类属性(实例对象)是否为空,如果存在则创建实例; 不存在则创建。

class Test(object):

    # 记录第一个被创建对象的引用

    ins = None     # 类属性

    def __new__(cls, *args, **kwargs):

        # 1.判断类属性是否是为空,如果为空,说明是第一次创建实例。不为空不创建,以保证实例只有一个

        if cls.ins is None:   # cls.ins 这个类的属性,类内部可以访问类属性

        # if Test.ins is None:   或/ if not cls.ins:

        

            # 2.调用父类的方法,为对象分配空间。

            cls.ins = super().__new__(cls)

            # Test.ins = object.__new__(cls, *args, **kwargs)


        # 3.返回类属性保存的对象引用

        return cls.ins   

        # return Test.ins

t1 = Test()

t2 = Test() 

print(id(t1))

print(id(t2))

  • 发表于 2021-07-05 13:49
  • 阅读 ( 438 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Wilia
Wilia

28 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1474 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章