单例模式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

posted @ 2023-04-05 13:14  SuperCodeX  阅读(9)  评论(0编辑  收藏  举报