这是一个最简单的单例实现,新手写个以后方便参看嘻嘻 ,主要利用重写__new__方法,有问题希望指出。
class SingleT(object):
_instance = None # 默认为None
def __new__(cls, *args, **kwargs): # 重写__new__方法 *args,**kwargs 是传入参数(可变参数)
if cls._instance is None: # 如果默认为None
cls._instance = super().__new__(cls) # 则调用super()地址即父类object
return cls._instance # 返回那个父类地址
else:
return cls._instance # 如果有地址就返回那个地址
t1 = SingleT()
t2 = SingleT()
print(id(t1) == id(t2)) # 控制台输出True id是查看对象在内存中指向的地址
print(t1) # 地址<__main__.SingleT object at 0x000001EEA0575AC8>
print(t2) # 地址<__main__.SingleT object at 0x000001EEA0575AC8>