本文主要是介绍设计模块之单例模块 和 pickle模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、设计模块之单例模块
二、pickle模块
三、选课系统项目分析
一、设计模块
在IT行业中一共有23种设计模块,主要分为三大类型
1、创建类型
2、结构类型
3、行为类型
"""设计模块是前辈们发明的经过反复的验证用来解决固定问题的固定套路"""
单例模式就是一个类只能产生一个对象,用来节省资源
主要场景:
因为有一个类里面有很多厉害的绑定给对象的方法,所以我们需要在很多时候使用到它,那么不同的使用的对象就可能会创建一个新对象,那么每次创建一个就会占空间。
如何实现:
我们需要在实例化对象的时候进行干涉 ———— 元类
# 基于元类
class Single(type):
# 增加一个全局变量,用来判断
new_obj = None
def __call__(self, *args, **kwargs): # 双下call最后返回什么,对象加括号就会得到什么
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('owen')
obj2 = MyClass('pdd')
obj3 = MyClass('wzz')
print(id(obj1), id(obj2), id(obj3))
print(obj1.__dict__, obj2.__dict__, obj3.__dict__)
# 我们在获取它名称空间里面只有一个键值对
其他类型单例—————— https://www.cnblogs.com/Dominic-Ji/p/10525994.html
二、pickle模块
""" 该模块只支持python """
实操:
将对象保存到文件,并且取出来自后还可以在使用对象的功能
# 存文件
import pickle
class MyClass(object):
school = 'school'
def __init__(self, name):
self.name = name
def choose_course(self):
print('%s正在选课'%self.name)
obj = MyClass('owen')
print(obj.school)
obj.choose_course()
# 使用二进制模式
with open(r'%s'% obj.name, 'wb') as f:
pickle.dump(obj, f)
import pickle
class MyClass(object):
school = '安徽大学'
def __init__(self, name):
self.name = name
def choose_course(self):
print('%s正在选课'%self.name)
obj = MyClass('owen')
# 使用二进制模式
with open(r'owen', 'rb') as f:
data = pickle.load(f)
print(data)
print(obj.name)
print(obj.school)
三、选课系统的项目分析
1、项目要求
# 项目分析:
选课系统
角色:学校、学员、课程、讲师
要求:
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文件
models.py
存储所有角色类
2、功能解读
管理员功能:
注册
登录
创建校区
创建课程
增加讲师
讲师功能:
登录
查看将要教授的课程
选择要教的课程
查看学生学习课程进度
给学生打分
学生功能:
注册
登录
选择校区
选择课程
查看分数
这篇关于设计模块之单例模块 和 pickle模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!