要实现python单例类首先要知道单例的意思
单例的意思就是无论你初始化多少个类,这些对象都是同一个,准确说内存地址都是同一块,你修改任何一个对象,其他对象都会跟着修改
所以要实现就是在开辟空间的时候进行设定,在python中开辟空间的方法是__new__()方法,所以代码如下
# 创建单例类 class Single: # 设置一个静态变量,在开辟空间时进行限制 __STATIC = 0 # 实现单例类方法,每次初始化对象时,进行判定,若是第一次初始化对象,就开辟一个空间并返回,若不是,则返回之前开辟好的空间 def __new__(cls, *args, **kwargs): if cls.__STATIC == 0: cls.__STATIC = object.__new__(cls) return cls.__STATIC def __init__(self): pass # 初始化两个对象 s1 = Single() s2 = Single() # 打印对象地址 print(s1) print(s2)
打印结果为
<__main__.Single object at 0x0000026832D67A20>
<__main__.Single object at 0x0000026832D67A20>