python实现单例模式总结

一、什么是单例模式

单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在。
当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场。

二、用类装饰器实现单例模式

def single_deractor(cls):
    __instance = {}
    def inner(*args,**kwargs):
        if cls not in __instance:
            __instance[cls] = cls(*args,**kwargs)
        return __instance[cls]
    return inner
@single_deractor
class Foo:
    def __init__(self,name):
        self.name = name
f1 = Foo('zs')
f2 = Foo('ls')
print(f1.name,f2.name)
print(f1 is f2)

三、使用__new__

class Foo:
    __instance = None
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __new__(cls, *args, **kwargs):
        if not cls.__instance:
            cls.__instance = object.__new__(cls)
        return cls.__instance
f1 = Foo('zs',12)
f2 = Foo('ls',13)
print(f1.name,f2.name)
print(f1 is f2)

四、使用元类

待补充,研究中

原文地址:https://www.cnblogs.com/linshuhui/p/9579521.html