# Copyright (c) Huawei Technologies Co., Ltd. 2023-2025. All rights reserved.
"""单例模式"""
import threading
from typing import Any, ClassVar
class SingletonMeta(type):
"""单例元类"""
_instances: ClassVar[dict[type, Any]] = {}
"""单例实例字典"""
_lock: ClassVar[threading.RLock] = threading.RLock()
"""可重入锁"""
def __call__(cls, *args, **kwargs): # noqa: ANN002, ANN003, ANN204
"""获取单例"""
with cls._lock:
if cls not in cls._instances:
instance = super().__call__(*args, **kwargs)
cls._instances[cls] = instance
return cls._instances[cls]