作业20200409

题目1:菱形问题的属性查找顺序

# python多继承菱形结构继承
# 经典类:
	- 深度优先,一个分支找到尽头再从另一个分支开始查找
# 新式类
	- 广度优先,一个分支不找到尽头,就开始另一个分支,等到最后一个分支再找尽头,最后再找object

作业2

import pickle
import uuid


class School:

    school_name = 'OLDBOY'

    def __init__(self, nickname, addr):
        self.__nickname = nickname
        self.__addr = addr
        self.uuid = uuid.uuid4()
        self.classes = []
        self.save_info()
    
    @property
    def nickname(self):
        return self.__nickname
    
    @nickname.setter
    def nickname(self, value):
        if not isinstance(value, str):
            print('名字必须是字符串')
            return 
        self.__nickname = value
    
    @nickname.deleter
    def nickname(self):
        print('不能删除名字')
        
        
    def relate_class(self, class_obj):
        self.classes.append(class_obj.uuid)
        self.save_info()


    def save_info(self):
        with open(f'db\\school_file\\{self.uuid}.pkl', 'wb') as f:
            pickle.dump(self, f)


    def get_class(self):
        print(self.__nickname.center(60, '='))
        # 打印班级开设的课程信息
        for class_uuid in self.classes:
            with open(f'db\\class_file\\{class_uuid}.pkl', 'rb') as f:
               class_obj = pickle.load(f)
               class_obj.get_course()
               class_obj.get_student()


class Class:
    def __init__(self, name):
        self.__name = name
        self.course = None
        self.students = []
        self.uuid = uuid.uuid4()
        self.save_info()
        
    @property
    def name(self):
        return self.__name
    
    @name.setter
    def name(self, value):
        if not isinstance(value, str):
            print('名字必须是字符串')
            return
        self.__name = value
    
    @name.deleter
    def name(self):
        print('不能删除名字')
    
    def relate_course(self, course_obj):
        self.course = course_obj.uuid
        self.save_info()

    def save_info(self):
        with open(f'db\\class_file\\{self.uuid}.pkl', 'wb') as f:
            pickle.dump(self, f)


    def get_course(self):
        print('%s' % self.name, end=" ")
        with open(f'db\\course_file\\{self.course}.pkl', 'rb') as f:
            course_obj = pickle.load(f)
            course_obj.course_info()


    def get_student(self):
        print('%s' % self.name, end=" ")
        for student_uuid in self.students:
            with open(f'db\\student_file\\{student_uuid}.pkl', 'rb') as f:
                student_obj = pickle.load(f)
                student_obj.student_info()


class Course:
    def __init__(self, name, period, price):
        self.name = name
        self.period = period
        self.price = price
        self.uuid = uuid.uuid4()
        self.save_info()

    @property
    def course_info(self):
        return '<课程名:%s 周期:%s 价钱:%s>' % (self.name, self.period, self.price)

    def save_info(self):
        with open(f'db\\course_file\\{self.uuid}.pkl', 'wb') as f:
            pickle.dump(self, f)

            
class People:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
        self.uuid = uuid.uuid4()



class Teacher(People):
    def __init__(self, name, age, sex, level):
        People.__init__(self, name, age, sex)
        self.level = level
        self.classes = None
        self.save_info()


    def save_info(self):
        pass


    def score(self):
        pass

    @property
    def my_class(self):
        return self.classes


class Student(People):
    def __init__(self, name, age, sex):
        People.__init__(self, name, age, sex)
        self.my_class = None
        self.my_course = None
        self.save_info()

    @property
    def student_info(self):
        return '<学生名:%s 年龄:%s 性别:%s>' % (self.name, self.age, self.sex)

    def relate_class(self, class_obj):
        self.my_class = class_obj.uuid
        self.my_course = class_obj.course.uuid
        class_obj.students.append(self.uuid)
        self.save_info()
        class_obj.save_info()


    def save_info(self):
        with open(f'db\\student_file\\{self.uuid}.pkl', 'wb') as f:
            pickle.dump(self, f)
posted @ 2020-04-09 20:40  the3times  阅读(19)  评论(0)    收藏  举报