确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象建立型模式。
那么单例模式有什么用途呢?举个常见的单例模式例子,咱们平时使用的电脑上都有一个回收站,在整个操做系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,并且回收站自行提供本身的实例,所以回收站是单例模式的应用。ide
class Singleton(object): __instance = None def __new__(cls, name, age): # 若是类属性__instance的值为None,那么就建立一个对象 if not cls.__instance: cls.__instance = object.__new__(cls) # 若是已经有实例存在,直接返回 return cls.__instance a = Singleton("Zhangsan", 18) b = Singleton("lisi", 20) print(id(a)) print(id(b)) a.age = 30 # 给a指向的对象添加一个属性 print(b.age) # 获取b指向的对象的age属性
运行结果:操作系统
2946414454432 2946414454432 30
class Singleton(object): __instance = None __first_init = False def __new__(cls, name, age): if not cls.__instance: cls.__instance = object.__new__(cls) return cls.__instance def __init__(self, name, age): if not self.__first_init: self.name = name self.age = age Singleton.__first_init = True a = Singleton("Zhangsan", 18) b = Singleton("lisi", 20) print(id(a)) print(id(b)) print(a.name, a.age) print(b.name, b.age) a.age = 50 print(b.age)
运行结果:code
2206640285344 2206640285344 Zhangsan 18 Zhangsan 18 50