使用Python实现单例模式:保证一个类只有一个实例

2023-04-03 00:00:00 实例 保证 只有一个

在Python中实现单例模式有多种方法,以下是其中两种比较常见的实现方式:

方法一:使用模块级别的变量

# singleton.py
class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls)
            cls._instance.name = "pidancode.com"
        return cls._instance
# main.py
from singleton import Singleton

a = Singleton()
b = Singleton()
print(a.name)  # pidancode.com
print(b.name)  # pidancode.com
print(a is b)  # True

方法二:使用装饰器

def singleton(cls):
    instances = {}

    def get_instance():
        if cls not in instances:
            instances[cls] = cls()
            instances[cls].name = "皮蛋编程"
        return instances[cls]

    return get_instance


@singleton
class MyClass:
    pass
# main.py
a = MyClass()
b = MyClass()
print(a.name)  # 皮蛋编程
print(b.name)  # 皮蛋编程
print(a is b)  # True

以上两种方法都能够实现单例模式,使用哪种方式取决于具体需求和开发者的偏好。

相关文章