美文网首页
python实现单例模式的几种方式

python实现单例模式的几种方式

作者: aport | 来源:发表于2020-01-08 19:39 被阅读0次

特点:确保某一个类只有一个实例对象

  • 模块
    python的模块就是一个天然的单例模式。当模块第一次导入时会产生一个.pyc文件,当第二次用时,直接加载.pyc文件,不会再次执行该模块的代码。

  • 装饰器

def SingleTon(cls, *args, **kwargs):
    _instance = {}

    def singleton():
        if cls not in _instance:
            _instance[cls] = cls(*args, **kwargs)
        return _instance[cls]
    return singleton


@SingleTon
class A(object):
    a = 1


t1 = A()
print(id(t1))  # 915018585536
t2 = A()
print(id(t2))  # 915018585536
  • 类(基于__new__)
class SingleTon(object):
    _isinstance = None

    def __new__(cls, *args, **kwargs):
        if not cls._isinstance:
            cls._isinstance = super(SingleTon, cls).__new__(cls, *args, **kwargs)
        return cls._isinstance


t1 = SingleTon()
print(id(t1))  # 744789979936
t2 = SingleTon()
print(id(t2))  # 744789979936

相关文章

网友评论

      本文标题:python实现单例模式的几种方式

      本文链接:https://www.haomeiwen.com/subject/wqosactx.html