废话不扯 直接上代码:
# 实例化一个单例
class Singleton(object):
__instance = None
__first_init = True
def __new__(cls, age, name):
'''
如果类属性__instance的值为None,那么就创建一个对象,并且赋值为这个对象的引用
保证下次调用这个方法时能够知道之前已经创建过对象了,这样就保证了只有1个对象
'''
if not cls.__instance:
# return super(Singleton, cls).__new__(cls)
cls.__instance = super(Singleton, cls).__new__(cls)
# cls.__instance = object.__new__(cls)
return cls.__instance
# def __init__(self,age,name):
# self.age = age
# self.name = name
def __init__(self, age, name):
if self.__first_init:
self.age = age
self.name = name
Singleton.__first_init = False
a = Singleton(18, "laowang")
print(id(a))
b = Singleton(8, "laozhang")
print(id(b))
print(a.age, a.name)
print(b.age, b.name)