python学习Day35
2022/8/2 14:23:54
本文主要是介绍python学习Day35,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Day 35
今日内容概要
- 设计模式
- pickle模块
- 选课系统项目分析
- 选课系统架构设计
今日内容详细
1.设计模式
1.什么是设计模式? 在IT行业有很多前辈针对固定的问题设计出固定的解决套路 2.设计模式共有23种 3.设计模式分三大类:创建型、结构型、行为型 4.设计模式——单例模式 类加括号调用多次只允许产生一个对象 class MyClass: pass obj1=MyClass() obj2=MyClass() print(id(obj1),id(obj2))#2485125659088 2485125478240 正常情况下类名加括号实例化产生对象时,执行几次就产生几个对象 但是产生不同的对象就会占用一些内存浪费资源,所以就用到了单例模式
方式1:使用元类干预对象的创建过程 #创建一个元类继承type class MyMeTaClass(type): #记录是否已经创建了对象 instance = None def __call__(self,*args,**kwargs): if self.instance: return self.instance #获得空对象 obj = super().__call__(*args, **kwargs) #保存对象 self.instance = obj #返回空对象 return obj class Single(metaclass = MyMeTaClass): def __init__(self, name): self.name = name obj1 = Single('jason') obj2 = Single('torry') print(id(obj1),id(obj2),)#1593437556992 1593437556992 print(obj1.name)#jason print(obj2.name)#jason
2.pickle模块
1.pickle模块与json模块很像 都是用序列化 反序列化的 2.优点:支持python所有数据类型 3.缺点:不支持跨语言传输,只能python自己使用,兼容性不好 本周选课系统,需要用该模块将对象保存到文件中(json不能实现),后续不会再用,因为有更高级的方法:ORM(对象关系映射)
class MyClass: def __init__(self, name): self.name = name def choice_course(self): print('%s正在选课'%self.name) obj=MyClass('jason') #需求:将对象保存到文件,且取出后还可以通过句点符随意调用 方法1:错误 with open(r'a.txt', 'w', encoding='utf8') as f: f.write(obj) 注意:常规的文件操作不行,只能产生文件里面没内容 方法2:错误 import json with open(r'a.txt', 'w', encoding='utf8') as f: f.write(json.dumps(obj)) 注意:json模块也不行,只能产生文件里面没内容 方法3:正确 import pickle with open(r'a.txt','wb') as f: # dumps形式存入 # f.write(pickle.dumps(obj)) # dump形式存入 pickle.dump(obj,f) with open(r'a.txt','rb') as f: #load形式取出 data = pickle.load(f) print(data)#打印出来是一个对象<__main__.MyClass object at 0x000002484AE56A60> print(data.name)#jason data.choice_course()#jason正在选课 """ pickle有一个限制:在当前程序名称空间中一定要有产生该对象类的存在,如果已经存入进去,把类清除后再取出会报错 """
3.选课系统项目分析
选课系统 角色:学校、学员、课程、讲师 要求: 1. 创建北京、上海 2 所学校 2. 创建linux,python,go 3个课程,linux\py在北京开,go在上海开 3. 课程包含,周期,价格,通过学校创建课程 4. 通过学校创建班级,班级关联课程、讲师,创建学员时,选择学校,关联班级 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.查看分数
4.选课系统架构设计
三层架构: 功能展示层: 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
作业
1.整理今日内容及博客 2.描述出选课系统管理员注册功能完整逻辑 3.尝试编写管理员其他功能
这篇关于python学习Day35的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器
- 2024-11-16四种数据科学Web界面框架快速对比:Rio、Reflex、Streamlit和Plotly Dash
- 2024-11-14获取参数学习:Python编程入门教程
- 2024-11-14Python编程基础入门