python每日作业4/9

作业一:自己试验一下菱形问题下的属性查找顺序

作业二:在昨天作业的基础之上
# 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
'''
原文地址:https://www.cnblogs.com/baicai37/p/12669342.html