完整的单例模式
基于 __new__
实现单例模式
import time
import threading
class Singleton(object):
instance = None
lock = threading.RLock()
def __new__(cls, *arg, **kwargs):
if cls.instance:
return cls.instance
with cls.lock:
if not cls.instance:
cls.instance = object.__new__(cls)
return cls.instance
obj = Singleton()
print(obj)
基于文件导入实现单利模式
# sg.py
class Singleton(object):
pass
obj = Singleton()
import sg
print(sg.obj)
应用场景:
- django中settings配置文件
- django的admin内部使用,将所有model类注册到了一个字典中。
new`方法返回的是什么?
新创建的对象,内部没有数据,需要经过init来进行初始化。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步