使用Python实现单例模式:保证一个类只有一个实例
在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
以上两种方法都能够实现单例模式,使用哪种方式取决于具体需求和开发者的偏好。
相关文章