设计模式
在IT行业中设计模式总共有23种,可以分为三大类
'''设计模式是前辈们发明的,经过反复验证用于解决固定问题的固定套路'''
单例模式的意思是一个类只能产生一个对象,用于节省资源
应用场景:
有一个类中有很多非常牛逼的绑定给对象的方法,我们需要在很多地方使用它,那么不同的程序员来用不知道有没有产生对象
所以自己会创建一个新对象,如此往复则会造成资源的浪费
如何实现:
我们需要在类实例化对象的时候进行干涉 >>>: 元类
单例模式:(可以有很多种的编写方式)
class Single(type):
new_obj = None
def __call__(self, *args, **kwargs):
if not self.new_obj:
obj = super().__call__(*args, **kwargs)
self.new_obj = obj
return self.new_obj
return self.new_obj
class MyClass(metaclass=Single):
def __init__(self, name):
self.name = name
obj1 = MyClass('jason')
obj2 = MyClass('tony')
print(id(obj1), id(obj2))
print(obj1.__dict__, obj2__dict__)
'''单例的实现方式不固定,有很多种'''
https://www.cnblogs.com/Dominic-Ji/p/10525994.html

pickle模块
"""
将该模块的目的仅仅是为了在选课系统中使用 后期会学习ORM就不会用pickle了
并且该模块只支持python 兼容性很差!!!
"""
需求:将对象保存到文件 并且取出来之后还可以使用对象的功能
import pickle
class MyClass(object):
school = '暨南大学'
def __init__(self, name):
self.name = name
def choice_course(self):
print('%s正在选课' % self.name)
obj = MyClass('jason')
print(obj.school)
obj.choice_course()
pickle可以
with open(r'%s'%obj.name,'wb') as f:
pickle.dump(obj, f)
with open(r'kevin','rb') as f:
data = pickle.load(f)
print(data)
print(data.name)
print(data.school)

选课系统项目分析
选课系统
角色:学校、学员、课程、讲师
要求:
1. 创建北京、上海 2 所学校
2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开
3. 课程包含,周期,价格,通过学校创建课程
4. 通过学校创建班级, 班级关联课程、讲师
5. 创建学员时,选择学校,关联班级
5. 创建讲师角色时要关联学校,
6. 提供三个角色接口
6.1 学员视图, 可以登录,注册, 选择学校,选择课程,查看成绩
6.2 讲师视图, 讲师登录,选择学校,选择课程, 查看课程下学员列表 , 修改所管理的学员的成绩
6.3 管理视图,登录,注册,创建讲师, 创建班级,创建课程,创建学校
7. 上面的操作产生的数据都通过pickle序列化保存到文件里
三层架构
展示层
学员功能
讲师功能
管理员功能
models.py
存储所有角色类
项目功能分析
"""为了减轻复杂度(不影响学习,几乎都是相同逻辑) 班级直接等同于课程"""
注册
登陆
创建学校
创建课程
创建讲师
登陆
查看教授课程
选择教授课程
查看课程学生
评判学生分数
注册
登陆
选择学校
选择课程
查看分数
项目目录搭建

数据保存剖析
类产生的对象在保存的时候
自动创建一个与类名一样的文件夹名 将数据保存到该文件夹内
obj = Admin('kevin',123)
print(obj.__class__)
print(obj.__class__.__name__)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人