一、今日作业====封装作业
作业二:在昨天作业的基础之上
# 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