选课系统
本章内容
- 设计模式之单例模式
- pickle模块
- 选课系统项目分析
- 选课系统项目搭建
- 编写功能
在IT行业中设计模式总共有23种,可以分为三大类
1.创建型
2.结构型
3.行为型
设计模式其实就是一个固定的套路,用来解决固定的问题
设计模式之单例模式
单例模式的意思是一个类只能产生一个对象,用于节省资源
应用场景:
有一个类中有很多非常牛逼的绑定给对象的方法
我们需要在很多地方使用它,那么不同的程序员来用不知道有没有产生对象
所以自己会创建一个新的对象,如此往复则会造成资源的浪费
如何实现:
我们需要在实例化对象的时候进行干涉 >>>>>>>: 元类
单例模式:(可以有很多种编写的方式)
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__)
pickle模块
该模块只支持python 兼容性很差!!!
class MyClass(object):
school = 'school'
def __init__(self,name):
self.name = name
def choose_course(self):
print('%s正在选课'%self.name)
obj = MyClass('jason')
print(obj.school)
obj.choose_course()
with open(r'%s.txt'%obj.name,'wb')as f:
pickle.dump(obj,f)
with open(r'%s.txt'%obj.name,'rb')as f:
data = pickle.load(f)
print(data)
print(data.name)
print(data.school)
注意:使用pickle时必须要有obj存在于名称空间,也就是说要配合class一起使用
选课系统项目分析
1.项目分析
# 角色: 学校、学员、课程、讲师要求:
# 1.创建北京、上海 2所学校
# 2.创建linux, python, go3个课程 , linux\py在北京开, go在上海开
# 3.课程包含,周期,价格,通过学校创建课程
# 4.通过学校创建班级, 班级关联课程、讲师
# 5.创建学员时,选择学校,关联班级
# 5.创建讲师角色时要关联学校,
# 6.提供三个角色接口
# 6.1学员视图, 可以注册, 交学费, 选择班级,
# 6.2讲师视图, 讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
# 6.3管理视图,创建讲师, 创建班级,创建课程
# 7.上面的操作产生的数据都通过pickle序列化保存到文件里
通过解析可以知道可以把这个项目写成三层架构
2.项目功能分析
管理员视图
注册
登录
创建学校
创建课程
创建讲师
讲师视图
登录
查看教授课程
选择教授课程
查看课程学生
评判学生分数
学员视图
注册
登录
选择学校
选择课程
查看分数
数据保存剖析
类产生的对象在保存的时候
自动创建一个与类名一样的文件夹名 将数据保存到该文件夹内
# 如何通过对象获取类对应的字符串名称
obj = Admin('jason',123)
# 固定方法
print(obj.__class__) # <class '__main__.Admin'> 类名
print(obj.__class__.__name__) # Admin 字符串

浙公网安备 33010602011771号