from typing import Callable, Generic, TypeVar T = TypeVar("T") class SingletonProvider(Generic[T]): def __init__(self, factory: Callable[[], T]): self._factory = factory self._instance: T | None = None def __call__(self) -> T: if self._instance is None: self._instance = self._factory() return self._instance def reset(self) -> None: """重置单例(测试 / 热重载用)""" self._instance = None def warmup(self) -> T: """提前初始化""" return self()