zoukankan      html  css  js  c++  java
  • 4.8---面向对象练习2

    改写要求:

    # 1、基于面向对象代码,扩写Student类
    # 2、加入序列化与反序列化操作
    # 3、对象之间的关联采用id号
    # 4、可以通过id找到对应的文件,然后从文件中反序列化出执行的学校、班级、课程、学生对象

    类定义部分:

    import uuid
    import pickle
    
    class School:
        school_name = "老男孩"
    
        def __init__(self,nickname,address):
            self.nickname = nickname
            self.address = address
            self.classes = []
            self.id = uuid.uuid4()
    
        def relate_class(self,class_obj):
            self.classes.append(class_obj.id)
    
        def save(self):
            with open(f"dbschool\{self.id}.pickle",mode="wb") as f:
                pickle.dump(self,f)
    
    
        def tell_class(self):
            print(self.nickname.center(50,"="))
            for class_id in self.classes:
                with open(f"dbclass\{class_id}.pickle", mode="rb") as f:
                    class_obj = pickle.load(f)
                class_obj.tell_course()
    
    class Class:
        def __init__(self,name):
            self.name = name
            self.course = None
            self.student = []
            self.id = uuid.uuid4()
            self.school = None
    
        def relate_course(self,course_obj):
            self.course = course_obj.id
            
        def relate_student(self,student_obj):
            self.student.append(student_obj.id)
    
        def save(self):
            with open(f"dbclass\{self.id}.pickle",mode="wb") as f:
                pickle.dump(self,f)
    
        def tell_course(self):
            print("%-10s " %self.name,end=" ")
            with open(f"dbcourse\{self.course}.pickle",mode="rb") as f:
                course = pickle.load(f)
            course.tell_info()
    
    
    class Course:
        def __init__(self,name,time,cost):
            self.name = name
            self.time = time
            self.cost = cost
            self.id = uuid.uuid4()
    
        def tell_info(self):
            print("课程名:%-10s 时长:%s,费用:%s" %(self.name,self.time,self.cost))
    
        def save(self):
            with open(f"dbcourse\{self.id}.pickle",mode="wb") as f:
                pickle.dump(self,f)
    
    
    class Student:
        def __init__(self,name,age,gender,num):
            self.name = name
            self.age = age
            self.gender = gender
            self.num = num
            self.class_obj = None
            self.id = uuid.uuid4()
    
        def tell_info(self):
            print("姓名:%-5s 年龄:%s 性别:%s,学号:%-5s"%(self.name,self.age,self.gender,self.num))
    
        def chose_class(self,class_obj):
            self.class_obj = class_obj.id
            class_obj.student.append(self.id)
    
        def save(self):
            with open(f"dbstudent\{self.id}.pickle", mode="wb") as f:
                pickle.dump(self, f)
    
        def tell_class(self):
            print(f"学生【{self.name}】班级信息".center(50,"="))
            with open(f"dbclass\{self.class_obj}.pickle",mode="rb") as f:
                class_obj = pickle.load(f)
            class_obj.tell_course()

    实例化部分:

    # 实例化对象       
    stu1 =Student("Jil",18,"mal",1118)
    s1 = School("猪猪校区","上海徐汇")
    c1 = Class("猪猪基础班")
    c2 = Class("猪猪进阶班")
    course1 = Course("猪的自我修养","6 months",20000)
    course2 = Course("鱼丸捕捉十式","5 months",18000)
    
    # 关联
    s1.relate_class(c1)
    s1.relate_class(c2)
    c1.relate_course(course1)
    c2.relate_course(course2)
    
    # 学生选班级
    stu1.chose_class(c1)
    
    # 存入文件
    s1.save()
    c1.save()
    c2.save()
    course1.save()
    course2.save()
    stu1.save()
    
    # 查看
    s1.tell_class()
    c1.tell_course()
    stu1.tell_class()
  • 相关阅读:
    规范化注释 VVDocumenter的使用方法
    cocoaPods的安装和使用
    AFNetworking 基本使用
    关于iOS9,Xcode7以上的安全性问题
    在collection view中加入 NavigationController问题
    Network Programming(1)
    System-Level I/O (1)
    Virtual Memory(6)
    Virtual memory(5)
    1. Two Sum
  • 原文地址:https://www.cnblogs.com/zhubincheng/p/12663199.html
Copyright © 2011-2022 走看看