单例

一、单例模式
new与init的区别:
__new:创建实例对象时调用的构造方法
init:初始化方法,用于设置实例的相关属性
python创建实例时,会先调用new构造方法,然后使用init进行实例初始化。
我们可以通过new来影响实例的创建,从而实现单例。

class A(object):
    __instance = None
    def __new__(cls,*args,**kwargs):
        if not cls. __instance:
            cls.__instance = super().__new__(cls,*args,**kwargs)
        return cls.__instance

a = A()
b = A()
print(a == b)
print(id(a) == id(b))

上面代码中,声明了一个私有类变量__instance,当__instance不为None时,代表系统中已有实例,直接返回该实例,若__instance为None时,表示系统中还没有该类实例,则创建新实例并返回。

你可能感兴趣的:(单例)