Files
2026-01-15 14:32:31 +08:00

23 lines
559 B
Python

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()