# 由此类创建的对象在内存中都指向了同一个地址
class Singleton:
def __new__(cls, *args, **kwargs):
if not hasattr(cls, 'instance'):
# cls代表当前类对象
# __new__返回一个实例
# 实例调用__init__ 进行初始化,最后交给变量
# 将对象作为这个类的一个属性,如果属性存在就直接返回对象,如果不存在就创建这个对象
cls.instance = super(Singleton, cls).__new__(cls)
return cls.instance
s1 = Singleton()
s2 = Singleton()
print(s1 is s2)