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
posted @ 2022-08-01 20:00  名字长的像一只老山羊  阅读(61)  评论(0编辑  收藏  举报