• 4.8作业


    一、课程

    class Course:
        def __init__(self, name, period, price):
            self.name = name
            self.period = period
            self.price = price
    
        def tell_course_info(self):
            print(f'课程:{self.name}  课程周期:{self.period}  课程价格:{self.price}')
    
    #定义一个将产生的课程对象写入文件的函数
    def creat_course_obj(name,period,price):
        course_obj = Course(name,period, price)
        obj_name=uuid.uuid4()
        with open(f'{obj_name}.pickle','wb') as f:
            pickle.dump(course_obj,f)
        return obj_name
    
    #定义一个通过id查找到文件获得对象的函数,此函数其他对象都可以使用
    def get_obj(obj_id):
        with open(f'{obj_id}.pickle', 'rb') as f:
                obj = pickle.load(f)
                return obj
    
    #1.产生课程对象,序列化存入文件中返回id
    course_obj1_id=creat_course_obj('py全栈开发','6mons',20000)
    course_obj2_id=creat_course_obj('linux运维','6mons',20000)
    
    #2.用id反序列化获得课程对象
    # course_obj1=get_obj(course_obj1_id)
    # course_obj2=get_obj(course_obj2_id)
    
    #3.查看课程信息
    # course_obj1.tell_course_info()
    # course_obj2.tell_course_info()
    

    二、班级

    # 二、班级
    class Class:
        def __init__(self, name):
            self.name = name
            self.course = None
    
        def related_course(self, course_obj):
            self.course = course_obj
    
        def tell_course(self):
            print(self.name)
            self.course.tell_course_info()
    
    #定义一个将产生的班级对象写入文件的函数
    def creat_class_obj(class_name):
        class_obj = Class(class_name)
        obj_name = uuid.uuid4()
        with open(f'{obj_name}.pickle', 'wb') as f:
            pickle.dump(class_obj, f)
        return obj_name
    
    #1.产生班级对象序列化存入文件
    class_obj1_id=creat_class_obj('python脱产14')
    class_obj2_id=creat_class_obj('python脱产13')
    
    #2.用id反序列化获得班级对象
    class_obj1=get_obj(class_obj1_id)
    class_obj2=get_obj(class_obj2_id)
    #3.给班级关联课程
    class_obj1.related_course(get_obj(course_obj1_id))
    class_obj2.related_course(get_obj(course_obj2_id))
    #3.查看班级的课程信息
    # class_obj1.tell_course()
    # class_obj2.tell_course()
    

    三、学校

    class School:
        school = 'oldboy'
    
        def __init__(self, nickname, address):
            self.nickname = nickname
            self.address = address
            self.classes = []
    
        def related_class(self, class_obj):
            self.classes.append(class_obj)
    
        def tell_class(self):
            print(self.nickname.center(30, '='))
            for class_obj in self.classes:
                class_obj.tell_course()
    
    #定义一个将产生的学校对象写入文件的函数
    def creat_school_obj(nick_name,address):
        school_obj = School(nick_name,address)
        obj_name = uuid.uuid4()
        with open(f'{obj_name}.pickle', 'wb') as f:
            pickle.dump(school_obj, f)
        return obj_name
    
    #1.产生学校对象序列化存入文件
    school_obj1_id=creat_school_obj('老男孩魔都校区','上海')
    school_obj2_id=creat_school_obj('老男孩帝都校区','北京')
    
    #2.用id反序列化获得学校对象
    school_obj1=get_obj(school_obj1_id)
    school_obj2=get_obj(school_obj2_id)
    
    #3.给学校关联班级
    # school_obj1.related_class(get_obj(class_obj1_id)) #抛出错误因为当前id获得的班级对象是还没有关联课程的班级对象,没有课程对象,
    #访问课程对象的属性就报错
    # school_obj1.related_class(get_obj(class_obj2_id))
    school_obj1.related_class(class_obj1)
    school_obj2.related_class(class_obj2)
    
    #3.查看学校班级的信息
    school_obj1.tell_class()
    school_obj2.tell_class()
    

    四、学生

    class Student:
        def __init__(self,name,age,gender,number):
            self.name=name
            self.age=age
            self.gender=gender
            self.number=number
        def related_class(self,class_obj):
            self.student_class=class_obj
    
        def tell_student_info(self):
            print(f'学生信息:
    '
                  f'[姓名:{self.name}  年龄:{self.age}  性别:{self.gender}  学号:{self.number}]')
        def tell_studnt_class(self):
            print(f'学生:{self.name}   所在班级:{self.student_class.name}')
            self.student_class.tell_course()
    

    五、讲师

    class Teacher:
        def __init__(self,name,age,price,grade):
            self.name=name
            self.age=age
            self.price=price
            self.grade=grade
            self.mark_students={}
    
        def teacher_mark(self,student_obj,score):
            self.mark_student_name=student_obj.name
            self.student_score=score
            self.mark_students.update({self.mark_student_name:self.student_score})
    
        def tell_teacher_info(self):
            print(f'老师信息:
    '
                  f'[姓名:{self.name}  年龄:{self.age}岁  薪资:{self.price}  讲师等级:{self.grade}]')
        def tell_student_score(self,student_name):
            self.mark_student_name=student_name
            self.student_score=self.mark_students.get(self.mark_student_name)
            print(f'学生姓名:{self.mark_student_name}   得分:[{ self.student_score}]   打分老师:{self.name}')
  • 相关阅读:
    sql server 分页
    省市区
    省市
    sql server 中英混合排序
    C# 添加大量sql
    小程序小数的输入判定
    C# Files 的值“<<<<<<< .mine”无效。路径中具有非法字符。
    vagrant安装遇到的问题
    vagrant安装使用
    tp6 session问题
  • 原文地址:https://www.cnblogs.com/haliluyafeng/p/12664050.html
Copyright © 2020-2023  润新知