作业一:自己试验一下菱形问题下的属性查找顺序
作业二:在昨天作业的基础之上
# 1、引入属性访问控制+property
# 2、引入继承与派生的概念来减少代码冗余
注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承
作业三:选做作业,本周内完成,在作业二的基础上编写业务逻辑
提供三个角色操作:
1 学员视图:可以注册, 交学费, 选择班级,
2 讲师视图:讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
3 管理视图:创建讲师, 创建班级,创建课程
import uuid import pickle import os class School(): def __init__(self,name,addr): self.name = name self.addr = addr self.classes_uid = [] self.uid = uuid.uuid3(uuid.NAMESPACE_DNS, name) def add_class(self,class_obj): self.classes_uid.append(class_obj.uid) @property def show_school(self): print(self.name.center(50,'=')) for class_file in self.classes_uid: if os.path.exists('{}.pkl'.format(class_file)): with open('{}.pkl'.format(class_file),'rb') as f: class1 = pickle.load(f) class1.show_class() @property def save(self): with open('{}.pkl'.format(self.uid), 'wb') as f: pickle.dump(self, f) with open('uid','a',encoding='utf-8') as f: f.write('{} '.format(str({self.name:self.uid}))) class Class(): def __init__(self,name): self.uid = uuid.uuid3(uuid.NAMESPACE_DNS,name) self.name = name self.courses_uid = [] self.students = [] def add_course(self,course_obj): self.courses_uid.append(course_obj.uid) def show_class(self): print(self.name) for cou1 in self.courses_uid: if os.path.isfile('{}.pkl'.format(cou1)): with open('{}.pkl'.format(cou1), 'rb') as f: cou = pickle.load(f) cou.show_course() @property def save(self): with open('{}.pkl'.format(self.uid), 'wb') as f: pickle.dump(self, f) class Course(): def __init__(self,name,price,time): self.uid = uuid.uuid3(uuid.NAMESPACE_DNS,name) self.name = name self.price = price self.time = time def show_course(self): print('课程名称:{} 课程价格:{} 课程周期:{}'.format(self.name,self.price,self.time)) @property def save(self): with open('{}.pkl'.format(self.uid), 'wb') as f: pickle.dump(self,f) class People: def __init__(self,name,age,sex): self.uid = uuid.uuid3(uuid.NAMESPACE_DNS, name) self.name = name self.age = age self.sex = sex class Student(People): def __init__(self,name,age,sex): People.__init__(self,name,age,sex) self.classes = [] self.cores = None def choose_class(self,class_obj): self.classes.append(class_obj) @property def show_class(self): for i in self.classes: i.show_class() @property def save(self): with open('{}.pkl'.format(self.uid), 'wb') as f: pickle.dump(self, f) class Teacher(People): def set_core(self,stu_obj,core): str_obj.cores = core @property def save(self): with open('{}.pkl'.format(self.uid), 'wb') as f: pickle.dump(self, f) school_shanghai = School('魔都校区','上海') class1 = Class('上海14期') class2 = Class('上海15期') course1 = Course('python全栈',20000,'6 mons') course2 = Course('linux运维',18000,'6 mons') class1.add_course(course1) class2.add_course(course2) school_shanghai.add_class(class1) school_shanghai.add_class(class2) stu1=Student("egon",18,"man") stu1.choose_class(class1) course1.save course2.save class1.save class2.save stu1.save school_shanghai.show_school stu1.show_class ''' 执行结果 =======================魔都校区======================= 上海14期 课程名称:python全栈 课程价格:20000 课程周期:6 mons 上海15期 课程名称:linux运维 课程价格:18000 课程周期:6 mons 上海14期 课程名称:python全栈 课程价格:20000 课程周期:6 mons '''