class single: _instance_=None def __new__(cls,*args,**kwargs): if cls._instance_ is None: cls._instance_=super().__new__(cls) return cls._instance_ def __init__(self,p): self.p=p def start(self): print(f'{self.p}')single1=single(1)single2=single(2)print(id(single1)==id(single2))single1.start()
# my_singleton.pyimport randomclass _Config: def __init__(self): self.num = random.random()config = _Config() # 模块导入时创建
from my_singleton import configprint(config.num) # 所有文件中都是同一个值
因为 Python 模块只加载一次,所以天然单例。