zoukankan      html  css  js  c++  java
  • day28作业

    # 1、练习上课作业讲解的面向对象代码,明天默写
    # 2、基于上课作业讲解的面向对象代码,扩写Student类
    # 3、加入序列化与反序列化操作
    # 4、对象之间的关联采用id号
    # 5、可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象
    import pickle
    import uuid
    import os
    class Student:
        uuid = uuid.uuid4()
        def __init__(self,name,age,student_id,male):
            self.name =name
            self.age =age
            self.student_id =student_id
            self.male =male
            self.uuid = None
    
        def choose_course(self,course_obj):
            self.course_obj = course_obj
    
        def tell_data(self):
            print(f'{self.name}选择了')
            self.course_obj.tell_info()
    
        def save_student_info(self):
            user_dic = f'姓名:{self.name} 学号:{self.student_id} 年龄:{self.age} 性别:{self.male}'
            if not os.path.exists(f'{str(uuid)}.pkl'):
                os.mkdir(f'{str(uuid)}.pkl')
            with open(f'{str(uuid)}.pkl', 'wb') as f:
                pickle.dump(user_dic,f)
    
        def tell_student_info(self):
            # print(f'姓名:{self.name} 学号:{self.id} 年龄:{self.age} 性别:{self.gender}')
            with open(f'{str(uuid)}.pkl', 'rb') as f:
                my_new_list = pickle.load(f)
                print(my_new_list)
    
    
    class Course:
        def __init__(self,name,period,price):
            self.name = name
            self.period = period
            self.price = price
    
        def tell_info(self):
            print('<课程名:%s 周期:%s 价钱:%s>' %(self.name,self.period,self.price))
    
    class Class:
        def __init__(self, name):
            self.name = name
            self.course = None
    
        def related_course(self, course_obj):
            # self.course = course_name
            self.course = course_obj
    
        def tell_course(self):
            print('%s' % self.name,end=" ")
            self.course.tell_info() # 打印课程的详细信息
    
    class School:
        school_name = 'OLDBOY'
    
        def __init__(self,nickname,addr):
            self.nickname = nickname
            self.addr = addr
            # self.course = {}  # {课程名:课程实例}
            # self.teacher = {}  # {老师名:老师实例}
            self.classes = []  #{班级名:班级实例}
    
        def related_class(self, class_obj):
            self.classes.append(class_obj)
    
        def tell_class(self):
            print(self.nickname.center(60, '='))
            for class_obj in self.classes:
                class_obj.tell_course()
    
    school_obj1=School('老男孩魔都校区','上海浦东')
    school_obj2=School('老男孩帝都校区','北京沙河')
    
    
    class_obj1 = Class('脱产14期')
    class_obj2 = Class('脱产15期')
    class_obj3 = Class('脱产29期')
    
    school_obj1.related_class(class_obj1)
    school_obj1.related_class(class_obj2)
    school_obj2.related_class(class_obj3)
    
    
    course_obj1=Course('python全栈开发','6mons',20000)
    course_obj2=Course('linux运维','5mons',18000)
    
    class_obj1.related_course(course_obj1)
    class_obj2.related_course(course_obj2)
    class_obj3.related_course(course_obj1)
    
    student_obj1 = Student('张三',18, '001',  'female')
    student_obj2 = Student('梦梦', 23,'002',  'male')
    
    student_obj1.choose_course(course_obj1)
    student_obj2.choose_course(course_obj2)
    
    student_obj1.tell_data()
    student_obj2.tell_data()
    
    student_obj1.save_student_info()
    student_obj1.tell_student_info()
    
    school_obj1.tell_class()
    school_obj2.tell_class()
    
  • 相关阅读:
    表格排序插件datatables
    dropzone手动上传
    上传文件插件dropzone的实例
    table加载慢
    利用touchslide实现tab滑动切换
    Qt之事件处理机制
    Qt容器组件(二)之QWidgetStack、QMdiArea、QDockWidget
    ActiveMQ之ActiveMQ-CPP安装及测试
    Qt容器组件(一)之QGroupBox、QScrollArea、QToolBox、QTabWidget
    Qt属性系统(Qt Property System)
  • 原文地址:https://www.cnblogs.com/yding/p/12663435.html
Copyright © 2011-2022 走看看