单例模式:其实就是重写__new__方法,添加条件保证只能创建一个对象,然后返回
代码如下:
# 实例化一个单例
class Singleton(object):
"""docstring for Singleton"""
__instance = None
def __new__(cls, age, name):
# 如果类属性__instance没有赋值
# 那么就创建一个对象,并且赋值为这个对象的引用,保证下次调用这个方法时
# 能够知道之前已经创建过对象了,这样就保证了只有 1 个对象
if not cls.__instance:
cls.__instance = object.__new__(cls)
return cls.__instance
a = Singleton(18, "zhangsan")
b = Singleton(10, "lisi")
print(id(a))
print(id(b))
a.age = 19 # 给 a 指向的对象添加一个属性
print(b.age) # 获取 b 指向的对象的 age 属性