单例模式Python实现
代码
class Singleton:
__instance = None
def __new__(cls):
if cls.__instance is None:
cls.__instance = super().__new__(cls)
return cls.__instance
# 使用示例
s1 = Singleton()
s2 = Singleton()
print(id(s1)) # 输出: 140708038359152
print(id(s2)) # 输出: 140708038359152
print(s1 == s2) # 输出: True
在上面的示例中,我们定义了一个名为 Singleton 的类,并使用一个静态变量 __instance
来确保只有一个实例被创建。在 __new__
方法中,我们检查 __instance
是否为 None
,如果是则创建一个新的实例并将其分配给 __instance
,否则返回现有的实例。这样,每次创建 Singleton 类的实例时,都将返回相同的实例
使用示例中,我们创建了两个 Singleton 类的实例 s1 和 s2,但它们的 ID 都相同,这表明它们是同一个对象。最后,我们检查 s1 和 s2 是否相等,结果为 True