【Python】Python实现单例模式有哪几种方式?

发布于:2025-12-02 01:08454人浏览
​在Python中,实现单例模式的主要方式有: 使用new方法 ## python www.itzhimei.com 代码 class Singleton: _instance = None

在Python中,实现单例模式的主要方式有:

  1. 使用new方法

## python www.itzhimei.com 代码
class Singleton:
    _instance = None

    def __new__(cls):
        if cls._instance is None:
            cls._instance = super().__new__(cls) 
        return cls._instance
  1. 装饰器

## python www.itzhimei.com 代码
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 Foo:
  pass
  1. 元类

## python www.itzhimei.com 代码
class SingletonMeta(type):
    _instances = {}

    def __call__(cls, *args, **kwargs):
        if cls not in cls._instances:
            cls._instances[cls] = super().__call__(*args, **kwargs)
        return cls._instances[cls]

class Singleton(metaclass=SingletonMeta):
    pass

主要都是利用 new、装饰器和元类在创建类实例时添加限制,返回同一实例。

区别在于装饰器为函数式,元类为类式,new 适用于类本身控制。各有优劣,但都可以实现单例模式。


相关文章
    最新文章
    热门标签