在Python中,单例模式是一种设计模式,确保类只有一个实例,并提供一个全局访问点。以下是两种常见的Python单例模式实现方式:
使用模块(Module):
Python 的模块在一个程序中只会被导入一次,因此可以使用模块来实现单例模式。
# singleton.py
class Singleton:
def __init__(self):
self.value = None
def set_value(self, value):
self.value = value
def get_value(self):
return self.value
# 在其他模块中使用单例
# main.py
from singleton import Singleton
singleton_instance = Singleton()
singleton_instance.set_value(42)
print(singleton_instance.get_value())
使用装饰器:
使用装饰器来包装类,确保只有一个实例。
def singleton(cls):
instances = {}
def get_instance(*args, **kwargs):
if cls not in instances:
instances[cls] = cls(*args, **kwargs)
return instances[cls]
return get_instance
@singleton
class Singleton:
def __init__(self):
self.value = None
def set_value(self, value):
self.value = value
def get_value(self):
return self.value
# 在其他地方使用单例
singleton_instance = Singleton()
singleton_instance.set_value(42)
print(singleton_instance.get_value())
这两种方式都可以实现单例模式,选择哪一种取决于项目的需求和个人偏好。使用模块的方式更加简单直观,而使用装饰器的方式更加灵活,可以应用于多个类。