python-35-单列模式-pickle
今日学习
设计模式
-
1.如何立即为设计模式
在IT行业,针对固定的一些问题设计出了固定的解决套路
-
2.设计模式总共有23种
我们目前不需要掌握这么多种,后续再慢慢看(现在能力不足)
-
3.设计模式的分类(三类)
创建型
结构型
行为型
-
4.设计模式之单例模式
单例模式 : 类加括号调用多次只允许产生一个对象
为什么要使用单例模式,主要是针对什么问题!!!!
正常情况下 类名只要加括号实例化产生对象 执行几次就会产生几个不同的对象; 有时候我们不希望频繁的产生不同的对象(例子4-1) 类中有很多很好用的方法,程序很多地方都需要使用(通过对象调用) 如果产生的地方特别多,那么浪费一定的内存空间,所以需要使用单例。
---------------例子4-1----------------------------- class MyClass: pass obj1 = MyClass() obj2 = MyClass() obj3 = MyClass() print(id(obj1), id(obj2), id(obj3)) -----执行结果------------ 1929380185760 1929380187248 1929380001536 #出现了类加括号执行3次,产生了三个不同的对象
pickle模块
pickle 模块与json模块很像,都是用来做序列化,反序列化的
并且pickle 模块支持python所有数据类型
但是pickele不支持跨语言传输,只能python,兼容性不好
需求案例:将对象保存到文件中,并且取出来之后还是可以通过句点符随意调用
--------------------例子1 常规的文件操作【行不通】--------------------
class Myclass:
def __init__(self,name):
self.name = name
def choice_course(self):
print('%s正在选课' % self.name)
obj = Myclass('jason')
with open(r'a','w',encoding='utf8' ) as f:
f.write(obj)
--------------执行结果----------
f.write(obj)
TypeError: write() argument must be str, not Myclass
#类型错误:write()参数必须是str,而不是Myclass
------------例2 利用json将对象保存【行不通】========
class Myclass:
def __init__(self,name):
self.name = name
def choice_course(self):
print('%s正在选课' % self.name)
obj = Myclass('jason')
import json
class Myclass:
def __init__(self,name):
self.name = name
def choice_course(self):
print('%s正在选课' % self.name)
obj = Myclass('jason')
with open(r'a','w',encoding='utf8' ) as f:
f.write(json.dumps(obj))
---------执行结果---------------
TypeError: Object of type Myclass is not JSON serializable
#类型错误:Myclass类型的对象不是JSON序列化的
-
选课系统项目分析
选课系统
角色:学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
3. 课程包含,周期,价格,通过学校创建课程
4. 通过学校创建班级, 班级关联课程、讲师5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校,
6. 提供三个角色接口
6.1 学员视图, 可以注册, 交学费, 选择班级,
6.2 讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
6.3 管理视图,创建讲师, 创建班级,创建课程
7. 上面的操作产生的数据都通过pickle序列化保存到文件里
功能分析
管理员功能(最核心)
1.注册
2.登录
3.创建讲师
4.创建学校
5.创建课程
讲师功能
1.注册
2.登录
3.选择教授课程
4.查看教授课程
5.管理课程分数
学生功能
1.注册
2.登录
3.选择学校
4.选择课程
5.查看分数
系统架构设计
三层架构
功能展示层
src.py
admin_view.py
teacher_view.py
student_view.py
核心逻辑层
admin_interface.py
teacher_interface.py
student_interface.py
数据处理层
db_hanlder.py
model.py