from threading import RLock class Singleton(object): single_lock = RLock() def __init__(self, name): self.name = name @classmethod def instance(cls, *args, **kwargs): with Singleton.single_lock: if not hasattr(Singleton, "_instance"): Singleton._instance = Singleton(*args, **kwargs) return Singleton._instance single_1 = Singleton.instance('第1次创建') single_2 = Singleton.instance('第2次创建') print(single_1 is single_2) # True