项目要求:
模仿django自带的admin组件,开发一套属于我们自己的start组件
今日项目重点:
重点一:单例模式,需要理解基于模块的单例模式具体是怎么回事,及其作用
重点二:路由的二级分发
重点三:对于self什么情况指的是理解
首先,我们先来说一下基于模块的单例模式,
单例顾名思义就是只有一个实例
我们现在一个py文件里定义好如下的类
class F: def __init__(self,name): self.name=name def sname(self): print(self.name) f=F('alex')
print('ok')
然后在另一个py文件中导入我们实例化的对象小f
from 基础知识.a import f print(id(f)) from 基础知识.a import f print(id(f)) #输出结果
#ok #1845270931384 #1845270931384
我们明明导入了两次模块 为啥只打印出一个ok呐 因为这是python独有的一个机制 它会把第一次导入的模块 保存到一个地方 如果下面还导入模块 并不会使用 而是从第一个那拿 我们所需要的
但是,如果导入的是大F,那就相当于重新实例化得到一个新的对象 而每一个对象都有属于自己的一块内存空间
from 基础知识.a import F print(id(F('alex'))) print(id(F('alex'))) #输出结果 # ok # 3024850486216 # 3024850485320
如果对类与对象的内存不是很清楚 可以看下图