通过类的方式来创建单例:
下面将通过一段代码解释一下,如何实现单例:
解析在代码中:
class OnlyOne(object):
# 记录第一个被创建对象的引用
instance = None
# 记录是否执行过初始化动作
init_flag = False
def __new__(cls, *args, **kwargs):
# 1. 判断类属性是否是空对象
if cls.instance is None:
# 2. 调用父类的方法,为第一个对象分配空间
cls.instance = super().__new__(cls)
# 3. 返回类属性保存的对象引用
return cls.instance
def __init__(self):
if not OnlyOne.init_flag:
print("初始化")
OnlyOne.init_flag = True
# 创建多个对象
player1 = OnlyOne()
print(player1)
player2 = OnlyOne()
print(player2)
打印结果如下:
初始化
<main.OnlyOne object at 0x000001650BD2C828>
<main.OnlyOne object at 0x000001650BD2C828>
Process finished with exit code 0
多次创建的对象实际上是同一个,也就是只创建了一个对象