zoukankan      html  css  js  c++  java
  • python基础学习-day28==课后作业练习

     一、今日作业: 
    1.练习上课作业讲解的面向对象代码,明天默写
    2.基于上课作业讲解的面向对象代码,扩写Student类
    3.加入序列化与反序列化操作
    4.对象之间的关联采用id号
    5.可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象
    import uuid
    import pickle
    class School:
        school_name = 'OLDBOY'
        def __init__(self,nickname,address):
            self.uid = str(uuid.uuid4())
            self.nickname = nickname
            self.address = address
            self.classes = []
        def addclass(self,class_uid):
            self.classes.append(class_uid)
        def tell_class(self):
            print(self.nickname.center(60, '='))
            for class_uid in self.classes:
                with open(f'{class_uid}.pkl','rb')as f:
                    res = pickle.load(f)
                res.tell_class()
        def save(self):
            with open(f'{self.uid}.pkl','wb')as f:
                pickle.dump(self,f)
    
    
    class Class:
        def __init__(self,name):
            self.uid = str(uuid.uuid4())
            self.name = name
            self.course = None
        def addcourse(self,course_uid):
            self.course = course_uid
        def tell_class(self):
            print('班级名:%s  '%(self.name),end='')
            with open(f'{self.course}.pkl','rb')as f:
                res = pickle.load(f)
            res.tell_course()
        def save(self):
            with open(f'{self.uid}.pkl', 'wb')as f:
                pickle.dump(self, f)
    
    
    class Course:
        def __init__(self, name, cycle, price):
            self.uid = str(uuid.uuid4())
            self.name = name
            self.cycle = cycle
            self.price = price
        def tell_course(self):
            print('课程名称:%s  课程周期:%s  课程价格:%s'%(self.name,self.cycle,self.price))
        def save(self):
            with open(f'{self.uid}.pkl', 'wb')as f:
                pickle.dump(self, f)
    
    class Student:
        def __init__(self,name,age,id,sex):
            self.name = name
            self.age = age
            self.uid = str(uuid.uuid4())
            self.sex = sex
            self.score = 0
            self.course_uid = None
        def choice(self,course_uid):
            self.course_uid = course_uid
        def tell_student(self):
            print('id:%s 姓名:%s 年龄:%s 性别:%s 分数:%s '%(self.uid,self.name,self.age,self.sex,self.score),end='')
        def save(self):
            with open(f'{self.uid}.pkl', 'wb')as f:
                pickle.dump(self, f)
    
    class Teacher:
        def __init__(self,name,age,salary,leve):
            self.uid = str(uuid.uuid4())
            self.name = name
            self.age = age
            self.salary = salary
            self.leve = leve
        def score(self,student_obj,grade):
            student_obj.score = grade
        def tell_teacher(self):
            print('姓名:%s 年龄:%s 薪资:%s 等级:%s '%(self.name,self.age,self.salary,self.leve),end='')
        def save(self):
            with open(f'{self.uid}.pkl', 'wb')as f:
                pickle.dump(self, f)
    
    def get(id):
        with open(f'{id}.pkl','rb')as f:
            res = pickle.load(f)
            print(res.__dict__)
    
    
    #创建学校对象
    school_obj = School('老男孩魔都校区','上海')
    #创建班级对象
    class_obj = Class('14期')
    class_obj2 = Class('15期')
    #创建课程对象
    course_obj = Course('python开发','5个月',1000)
    course_obj2 = Course('luinex开发','1个月',10000)
    #将班级对象的uid存到学校对象中
    school_obj.addclass(class_obj.uid)
    school_obj.addclass(class_obj2.uid)
    #将课程对象的uid存到班级对象中
    class_obj.addcourse(course_obj.uid)
    class_obj2.addcourse(course_obj2.uid)
    #保存对象
    school_obj.save()
    class_obj.save()
    class_obj2.save()
    course_obj.save()
    course_obj2.save()
    #打印数据
    school_obj.tell_class()
    #从文件中根据uid去出数据
    get(school_obj.uid)
    get(class_obj.uid)
    get(course_obj.uid)
    
    
    #创建学生对象
    stu1 = Student('张三',18,2017050222,'')
    #选课
    stu1.choice(course_obj.uid)
    
    teach1 = Teacher('李四',18,20000,'特级教师')
    teach1.score(stu1,90)
    stu1.save()
    teach1.save()
    stu1.tell_student()
  • 相关阅读:
    Oracle 11g系列:函数与存储过程
    Oracle 11g系列:视图
    Oracle 11g系列:约束
    Oracle 11g系列:数据表对象
    Oracle 11g系列:数据库
    Oracle 11g系列:SQL Plus与PL/SQL
    Ext.util.TaskRunner定时执行任务
    MS SQL Server存储过程
    UML基础:用例图Use Case Diagram(1)
    UML基础系列:类图
  • 原文地址:https://www.cnblogs.com/dingbei/p/12669505.html
Copyright © 2011-2022 走看看