给出一个python单例模式示例

当实现单例模式时,可以使用装饰器或元类来实现。以下是一个使用装饰器实现的Python单例模式示例:

def Singleton(cls):
    instances = {}

    def wrapper(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]

    return wrapper

@Singleton
class ExampleSingleton:
    def __init__(self, name):
        self.name = name

# 创建示例
obj1 = ExampleSingleton("对象1")
obj2 = ExampleSingleton("对象2")

# 打印对象名
print(obj1.name)  # 输出:"对象1"
print(obj2.name)  # 输出:"对象1"
print(obj1 is obj2)  # 输出:True

在上面的示例中,Singleton是一个装饰器函数,用于将类包装成单例模式。在创建类ExampleSingleton的实例时,如果实例不存在,则创建新实例并将其保存在instances字典中;如果实例已存在,则直接返回已存在的实例。通过这种方式,保证了同一类的实例唯一。

请注意,如果使用该示例的单例类ExampleSingleton在创建实例时需要传递不同的参数,则无法确保其唯一性。如果确保所有的实例都具有相同的参数,则可以使用该示例。