首页 > 其他 > 详细

完整的单例模式

时间:2020-04-05 17:38:11      阅读:71      评论:0      收藏:0      [点我收藏+]

基于 __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来进行初始化。

完整的单例模式

原文:https://www.cnblogs.com/lvweihe/p/12637760.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!