python中的单例及实现
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
__new__方法实现单例
实现__new__方法,然后将类的一个实例绑定到类变量__instance上;如果cls.__instance为None,则说明该类还没有被实例化过,new一个该类的实例,并返回;如果cls.__instance不为None,直接返回__instance,代码如下:
class Person(object):
# 这是一个单例类
__instance = None
# 这个类属性存储的是实例对象
def __new__(cls, *args, **kwargs):
if not cls.__instance:
# 如果__instance没有存储实例对象,就用父类方法构建
cls.__instance = super(Person, cls).__new__(cls, *args, **kwargs)
return cls.__instance
if __name__ == '__main__':
ming = Person()
print(id(ming)) #id方法是指向对象的内存地址
xiao = Person()
print(id(xiao))
输出:
36082016
36082016