开发stark组件

项目要求:

    模仿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

如果对类与对象的内存不是很清楚 可以看下图

猜你喜欢

转载自www.cnblogs.com/yftzw/p/9342738.html