什么是单例模式
单例就是单个实例,保证所创建的类进行实例化的时候,每次创建的实例都是同一个,确保在内存中只有一个对象。
应用场景
当创建某个对象需要很大的内存空间的时候可以考虑单例模式,或者一些资源操作等导致性能或者损耗。
代码实现
class DanLiLei:
_instance = None
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = object.__new__(cls)
return cls._instance
a = DanLiLei()
print(a)
b = DanLiLei()
print(b)
# 输出结果
# <__main__.DanLiLei object at 0x0000020433BF68D0>
# <__main__.DanLiLei object at 0x0000020433BF68D0>
由此可以看出,所创建的a,b两个对象其内存地址为同一块内存地址,所哟a,b就是同一个实例。
原理
类中的魔法方法__new__方法,该方法的作用就是给对象在内存中分配空间,并将该地址返回给__init__中的self参数。通过重写该魔法方法可以控制保证每次所创建对象的地址为同一块空间,从而实现单例模式。