python基础学习-day29==课后作业练习

一、今日作业====封装作业

作业二:在昨天作业的基础之上
# 1、引入属性访问控制+property
# 2、引入继承与派生的概念来减少代码冗余
注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承

作业三:选做作业,本周内完成,在作业二的基础上编写业务逻辑
提供三个角色操作:
1 学员视图:可以注册, 交学费, 选择班级,
2 讲师视图:讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
3 管理视图:创建讲师, 创建班级,创建课程

# 作业一:
class X(object):
    def test(self):
        print('from X')
    pass


class Y(X):
    def test(self):
        print('from Y')
    pass


class Z(X):
    # def test(self):
    #     print('from Z')
    pass


class A(Z, Y):
    # def test(self):
    #     print('from A')
    pass

#
print(A.mro())  # 类D以及类D的对象访问属性都是参照该类的mro列表
# 输出:[<class '__main__.D'>, <class '__main__.C'>, <class '__main__.B'>, <class '__main__.A'>, <class 'object'>]

obj = A()
obj.test()        # from Y

# 查找顺序:A ==> Z ==> Y ==> X ==> object



# 作业二:
import uuid
import pickle


class Info:
    def __init__(self, name):
        self.name = name
        self.uid = str(uuid.uuid4())

    @property
    def save(self):
        with open(f'info/{self.uid}.pickle', mode='wb')as f:
            pickle.dump(self, f)

    @property
    def get(self):
        with open(f'info/{self.uid}.pickle', mode='rb')as f:
            res = pickle.load(f)
            print(res.__dict__)
#学校类
class School:
    def __init__(self,school_name,school_address):
        self.school_name=school_name
        self.school_address=school_address
        #一个校区可以存放多个班级,在实例化学校类得到对象时,初始化班级列表
        self.classes_list=[]

    def create_classes(self,classes_name):
        self.classes_list.append(classes_name)
        #调用班级类,得到班级对象,并返回给调用者
        cls_obj=Classes(classes_name,self.school_name)
        return cls_obj

#1.调用类实例化得到学校对象
school_obj=School('老男孩校区','中国上海市')
#2.通过学校对.create_classes方法来创建班级
cla_obj=school_obj.create_classes('上海14期')
#3.班级对象

#班级类
class Classes:
    pass
#课程类
class Course:
    pass
#学生类
class Student:
    pass
#讲师类
class Teacher:
    pass
原文地址:https://www.cnblogs.com/dingbei/p/12670145.html