单例模式
单例是23种设计模式的一种,最简单的一种
https://www.cnblogs.com/liuqingzheng/p/10038958.html
什么是单例模式?
单例模式指的是:保证一个类仅有一个实例,并提供一个访问它的全局访问点
线程1 执行:
cursor.excute('select * from user')
线程2执行:
cursor.excute('select * from books')
线程1 执行
cursor.fetchAll() # 本来想取线程1的数据,但是拿出查询到的数据得到线程2的数据
综上,所以django ,每个线程,一个连接对象,不然就会数据错乱---》 有了连接池
使用单例五种方法
方法1、使用模块
class Singleton(object): def foo(self): pass singleton = Singleton()
from mysingleton import singleton
方法2、使用装饰器
之前学的 装饰器,都是用来装饰 函数 ,装饰器可以用来装饰类

执行结果为True
单例3、使用类方法

方法4、使用 __new__
通俗的讲解Python中的__new__()方法-CSDN博客
__init__ 和 __new__ 区别是什么1 类()--->触发类中的__init__--->对象已经创建出来了,不能拦截住,做成单例了
2 类()--->触发类中的__new__--->真正的创建对象,判断之前有没有创建过,如果创建过,直接返回
3 懂了元类---》类()--->触发元类的 __call__--->判断之前有没有创建过,如果创建过,直接返回
