• 作业23


    作业23

    第一题

    # 作业一:试验菱形问题下的属性查找顺序
    class A:
        pass
    
    
    class B(A):
        pass
    
    
    class C(B):
        pass
    
    
    class D(B):
        pass
    
    
    class E(A):
        pass
    
    
    class F(A):
        pass
    
    
    class G(E):
        pass
    
    
    class H(C, D, G, F):
        pass
    
    
    class I(H):
        pass
    
    
    class J(H):
        pass
    
    
    # print(J.mro())
    # print(H.mro())
    

    第二题

    Father不隐藏版

    # 作业二:在昨天作业的基础之上
    #    1、引入属性访问控制+property
    #    2、引入继承与派生的概念来减少代码冗余
    #       注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承
    
    import pickle
    import uuid
    
    
    class Father:
        def __init__(self, name):
            self.uid = uuid.uuid4()
            self.name = name
    
        def save_data(self):
            with open("{}.pkl".format(self.uid), "wb") as f:
                pickle.dump(self, f)
            with open("{}".format(self.__class__.__name__), "a", encoding="utf-8") as f:
                f.write("{%s:%s}
    " % (self.name, self.uid))
    
    
    
    
    class School(Father):
        __school_name = "old boy"
    
        def __init__(self, name, adr):
            Father.__init__(self,name)
            self.__adr = adr
            self.__classes = []
    
        @property
        def school_info(self):
            school_info = "{}({})".format(self.name, self.__adr).center(50, "=")+"
    "
            for class_uid in self.__classes:
                with open("{}.pkl".format(class_uid), "rb") as f:
                    class_obj = pickle.load(f)
                school_info += class_obj.class_info
                school_info += class_obj.students_info
            return school_info
    
        def relate_class(self, class_obj):
            self.__classes.append(class_obj.uid)
    
    
    
    
    class Class(Father):
        def __init__(self, name):
            Father.__init__(self,name)
            self.__courses = []
            self.students = []
    
        @property
        def class_info(self):
            class_info = "{}	".format(self.name)
            for course_uid in self.__courses:
                with open("{}.pkl".format(course_uid), "rb") as f:
                    course_obj = pickle.load(f)
                class_info += course_obj.course_info
            return class_info
    
        def relate_course(self, course_obj):
            self.__courses.append(course_obj.uid)
    
        @property
        def students_info(self):
            students_info = ""
            for stu_obj_uid in self.students:
                with open("{}.pkl".format(stu_obj_uid), "rb") as f:
                    stu_obj = pickle.load(f)
                students_info += stu_obj.stu_info
            return students_info
    
    
    
    
    class Course(Father):
        def __init__(self, name, period, price):
            Father.__init__(self,name)
            self.__period = period
            self.__price = price
    
        @property
        def course_info(self):
            course_info = "[{}   {}  {}]
    ".format(self.name, self.__period, self.__price)
            return course_info
    
    
    
    
    class Student(Father):
        def __init__(self, name, age, num, gender):
            Father.__init__(self,name)
            self.__age = age
            self.__num = num
            self.__gender = gender
            self.__class_obj = None
    
        def relate_class(self, class_obj):
            self.__class_obj = class_obj
            class_obj.students.append(self.uid)
    
        @property
        def stu_info(self):
            return "姓名:{}    年龄:{}    学号:{}    性别:{}
    ".format(self.name, self.__age, self.__num, self.__gender)
    
    
    
    
    # 创建新校区,班级,课程,学生
    school_obj1 = School("老男孩魔都校区", "上海虹桥")
    school_obj2 = School("老男孩帝都校区", "北京某某")
    class_obj1 = Class("上海脱产14期")
    class_obj2 = Class("上海脱产15期")
    class_obj3 = Class("北京脱产29期")
    course_obj1 = Course("python全栈开发", "5 mon", 22000)
    course_obj2 = Course("linux 运维课程", "4 mon", 20000)
    stu1 = Student("wu", 22, 1, "male")
    stu2 = Student("egon", 24, 2, "female")
    stu3 = Student("tank", 26, 3, "male")
    stu4 = Student("ha", 28, 4, "female")
    
    # 校区关联班级
    school_obj1.relate_class(class_obj1)
    school_obj1.relate_class(class_obj2)
    school_obj2.relate_class(class_obj3)
    # 班级关联课程
    class_obj1.relate_course(course_obj1)
    class_obj2.relate_course(course_obj2)
    class_obj3.relate_course(course_obj1)
    # 学生选择班级
    stu1.relate_class(class_obj1)
    stu2.relate_class(class_obj2)
    stu3.relate_class(class_obj2)
    stu4.relate_class(class_obj3)
    #
    #
    # # 查看uuid
    # print(school_obj1.uid)
    # print(school_obj2.uid)
    # print(class_obj1.uid)
    # print(class_obj2.uid)
    # print(class_obj3.uid)
    # print(course_obj1.uid)
    # print(course_obj2.uid)
    # print(stu1.uid)
    # print(stu2.uid)
    # print(stu3.uid)
    # print(stu4.uid)
    #
    # print(school_obj1.__dict__)
    # 保存信息
    school_obj1.save_data()
    school_obj2.save_data()
    class_obj1.save_data()
    class_obj2.save_data()
    class_obj3.save_data()
    course_obj1.save_data()
    course_obj2.save_data()
    stu1.save_data()
    stu2.save_data()
    stu3.save_data()
    stu4.save_data()
    
    # # 输出信息
    print(school_obj1.school_info)
    # school_obj1.show_school()
    # school_obj2.show_school()
    # class_obj1.show_students()
    

    Father类内隐藏属性版-----1

    import pickle
    import uuid
    
    
    class Father:
        def __init__(self, name):
            self.__uid = uuid.uuid4()
            self.__name = name
    
        def save_data(self):
            with open("{}.pkl".format(self.__uid), "wb") as f:
                pickle.dump(self, f)
            with open("{}".format(self.__class__.__name__), "a", encoding="utf-8") as f:
                f.write("{%s:%s}
    " % (self.__name, self.__uid))
    
    
    class School(Father):
        __school_name = "old boy"
    
        def __init__(self, name, adr):
            Father.__init__(self, name)
            self.__adr = adr
            self.__classes = []
    
        @property
        def school_info(self):
            school_info = "{}({})".format(self._Father__name, self.__adr).center(50, "=") + "
    "
            for class_uid in self.__classes:
                with open("{}.pkl".format(class_uid), "rb") as f:
                    class_obj = pickle.load(f)
                school_info += class_obj.class_info
                school_info += class_obj.students_info
            return school_info
    
        def relate_class(self, class_obj):
            self.__classes.append(class_obj._Father__uid)
    
    
    class Class(Father):
        def __init__(self, name):
            Father.__init__(self, name)
            self.__courses = []
            self.__students = []
    
        @property
        def class_info(self):
            class_info = "{}	".format(self._Father__name)
            for course_uid in self.__courses:
                with open("{}.pkl".format(course_uid), "rb") as f:
                    course_obj = pickle.load(f)
                class_info += course_obj.course_info
            return class_info
    
        def relate_course(self, course_obj):
            self.__courses.append(course_obj._Father__uid)
    
        @property
        def students_info(self):
            students_info = ""
            for stu_obj_uid in self.__students:
                with open("{}.pkl".format(stu_obj_uid), "rb") as f:
                    stu_obj = pickle.load(f)
                students_info += stu_obj.stu_info
            return students_info
    
    
    class Course(Father):
        def __init__(self, name, period, price):
            Father.__init__(self, name)
            self.__period = period
            self.__price = price
    
        @property
        def course_info(self):
            course_info = "[{}   {}  {}]
    ".format(self._Father__name, self.__period, self.__price)
            return course_info
    
    
    class Student(Father):
        def __init__(self, name, age, num, gender):
            Father.__init__(self, name)
            self.__age = age
            self.__num = num
            self.__gender = gender
            self.__class_obj = None
    
        def relate_class(self, class_obj):
            self.__class_obj = class_obj
            class_obj._Class__students.append(self._Father__uid)
    
        @property
        def stu_info(self):
            return "姓名:{}    年龄:{}    学号:{}    性别:{}
    ".format(self._Father__name, self.__age, self.__num, self.__gender)
    
    
    # 创建新校区,班级,课程,学生
    school_obj1 = School("老男孩魔都校区", "上海虹桥")
    school_obj2 = School("老男孩帝都校区", "北京某某")
    class_obj1 = Class("上海脱产14期")
    class_obj2 = Class("上海脱产15期")
    class_obj3 = Class("北京脱产29期")
    course_obj1 = Course("python全栈开发", "5 mon", 22000)
    course_obj2 = Course("linux 运维课程", "4 mon", 20000)
    stu1 = Student("wu", 22, 1, "male")
    stu2 = Student("egon", 24, 2, "female")
    stu3 = Student("tank", 26, 3, "male")
    stu4 = Student("ha", 28, 4, "female")
    
    # 校区关联班级
    school_obj1.relate_class(class_obj1)
    school_obj1.relate_class(class_obj2)
    school_obj2.relate_class(class_obj3)
    # 班级关联课程
    class_obj1.relate_course(course_obj1)
    class_obj2.relate_course(course_obj2)
    class_obj3.relate_course(course_obj1)
    # 学生选择班级
    stu1.relate_class(class_obj1)
    stu2.relate_class(class_obj2)
    stu3.relate_class(class_obj2)
    stu4.relate_class(class_obj3)
    #
    #
    # # 查看uuid
    # print(school_obj1.uid)
    # print(school_obj2.uid)
    # print(class_obj1.uid)
    # print(class_obj2.uid)
    # print(class_obj3.uid)
    # print(course_obj1.uid)
    # print(course_obj2.uid)
    # print(stu1.uid)
    # print(stu2.uid)
    # print(stu3.uid)
    # print(stu4.uid)
    #
    print(school_obj1.__dict__)
    # # 保存信息
    school_obj1.save_data()
    school_obj2.save_data()
    class_obj1.save_data()
    class_obj2.save_data()
    class_obj3.save_data()
    course_obj1.save_data()
    course_obj2.save_data()
    stu1.save_data()
    stu2.save_data()
    stu3.save_data()
    stu4.save_data()
    
    # # 输出信息
    print(school_obj1.school_info)
    

    Father类内隐藏属性版-----2

    import pickle
    import uuid
    
    
    class Father:
        def __init__(self, name):
            self.__uid = uuid.uuid4()
            self.__name = name
    
        def save_data(self):
            with open("{}.pkl".format(self.__uid), "wb") as f:
                pickle.dump(self, f)
            with open("{}".format(self.__class__.__name__), "a", encoding="utf-8") as f:
                f.write("{%s:%s}
    " % (self.__name, self.__uid))
    
        @property
        def name(self):
            return self.__name
    
        @property
        def uid(self):
            return self.__uid
    
    
    class School(Father):
        __school_name = "old boy"
    
        def __init__(self, name, adr):
            Father.__init__(self, name)
            self.__adr = adr
            self.__classes = []
    
        @property
        def school_info(self):
            school_info = "{}({})".format(self.name, self.__adr).center(50, "=") + "
    "
            for class_uid in self.__classes:
                with open("{}.pkl".format(class_uid), "rb") as f:
                    class_obj = pickle.load(f)
                school_info += class_obj.class_info
                school_info += class_obj.students_info
            return school_info
    
        def relate_class(self, class_obj):
            self.__classes.append(class_obj.uid)
    
    
    class Class(Father):
        def __init__(self, name):
            Father.__init__(self, name)
            self.__courses = []
            self.__students = []
    
        @property
        def class_info(self):
            class_info = "{}	".format(self.name)
            for course_uid in self.__courses:
                with open("{}.pkl".format(course_uid), "rb") as f:
                    course_obj = pickle.load(f)
                class_info += course_obj.course_info
            return class_info
    
        def relate_course(self, course_obj):
            self.__courses.append(course_obj.uid)
    
        @property
        def students_info(self):
            students_info = ""
            for stu_obj_uid in self.__students:
                with open("{}.pkl".format(stu_obj_uid), "rb") as f:
                    stu_obj = pickle.load(f)
                students_info += stu_obj.stu_info
            return students_info
    
        @property
        def students(self):
            return self.__students
    
    
    class Course(Father):
        def __init__(self, name, period, price):
            Father.__init__(self, name)
            self.__period = period
            self.__price = price
    
        @property
        def course_info(self):
            course_info = "[{}   {}  {}]
    ".format(self.name, self.__period, self.__price)
            return course_info
    
    
    class Student(Father):
        def __init__(self, name, age, num, gender):
            Father.__init__(self, name)
            self.__age = age
            self.__num = num
            self.__gender = gender
            self.__class_obj = None
    
        def relate_class(self, class_obj):
            self.__class_obj = class_obj
            class_obj.students.append(self.uid)
    
        @property
        def stu_info(self):
            return "姓名:{}    年龄:{}    学号:{}    性别:{}
    ".format(self.name, self.__age, self.__num, self.__gender)
    
    
    # 创建新校区,班级,课程,学生
    school_obj1 = School("老男孩魔都校区", "上海虹桥")
    school_obj2 = School("老男孩帝都校区", "北京某某")
    class_obj1 = Class("上海脱产14期")
    class_obj2 = Class("上海脱产15期")
    class_obj3 = Class("北京脱产29期")
    course_obj1 = Course("python全栈开发", "5 mon", 22000)
    course_obj2 = Course("linux 运维课程", "4 mon", 20000)
    stu1 = Student("wu", 22, 1, "male")
    stu2 = Student("egon", 24, 2, "female")
    stu3 = Student("tank", 26, 3, "male")
    stu4 = Student("ha", 28, 4, "female")
    
    # 校区关联班级
    school_obj1.relate_class(class_obj1)
    school_obj1.relate_class(class_obj2)
    school_obj2.relate_class(class_obj3)
    # 班级关联课程
    class_obj1.relate_course(course_obj1)
    class_obj2.relate_course(course_obj2)
    class_obj3.relate_course(course_obj1)
    # 学生选择班级
    stu1.relate_class(class_obj1)
    stu2.relate_class(class_obj2)
    stu3.relate_class(class_obj2)
    stu4.relate_class(class_obj3)
    #
    #
    # # 查看uuid
    # print(school_obj1.uid)
    # print(school_obj2.uid)
    # print(class_obj1.uid)
    # print(class_obj2.uid)
    # print(class_obj3.uid)
    # print(course_obj1.uid)
    # print(course_obj2.uid)
    # print(stu1.uid)
    # print(stu2.uid)
    # print(stu3.uid)
    # print(stu4.uid)
    #
    print(school_obj1.__dict__)
    # # 保存信息
    school_obj1.save_data()
    school_obj2.save_data()
    class_obj1.save_data()
    class_obj2.save_data()
    class_obj3.save_data()
    course_obj1.save_data()
    course_obj2.save_data()
    stu1.save_data()
    stu2.save_data()
    stu3.save_data()
    stu4.save_data()
    
    # # 输出信息
    print(school_obj1.school_info)
    # school_obj1.show_school()
    # school_obj2.show_school()
    # class_obj1.show_students()
    
    
  • 相关阅读:
    javascript事件委托和jQuery事件绑定on、off 和one
    转:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
    网游加速器原理、技术与实现
    自动化测试等级
    游戏测试工具
    JMeter
    Python高级编程
    测试提高项目的方法
    python mysqldb
    Python中的操作符重载
  • 原文地址:https://www.cnblogs.com/achai222/p/12670026.html
Copyright © 2020-2023  润新知