# # 1、引入属性访问控制+property
# # 2、引入继承与派生的概念来减少代码冗余
# 注意:要满足什么"是"什么的关系,不满足"是"的关系不要去继承
# 作业三:选做作业,本周内完成,在作业二的基础上编写业务逻辑
# 提供三个角色操作:
# 1 学员视图:可以注册, 交学费, 选择班级,
# 2 讲师视图:讲师可管理自己的班级, 上课时选择班级, 查看班级学员列表 , 修改所管理的学员的成绩
# 3 管理视图:创建讲师, 创建班级,创建课程
class School:
school_name = 'OLDBOY'
def __init__(self, nickname, addr):
self.nickname = nickname
self.addr = addr
self.classes = []
def related_class(self, class_obj):
self.classes.append(class_obj)
def tell_class(self): # 改
# 打印的班级的名字
print(self.nickname.center(60,'='))
# 打印班级开设的课程信息
for class_obj in self.classes:
class_obj.tell_course()
class Class:
def __init__(self, name):
self.name = name
self.course = None
def related_course(self, course_obj):
# self.course = course_name
self.course = course_obj
def tell_course(self):
print('%s' % self.name,end=" ")
self.course.tell_info() # 打印课程的详细信息
# 二:班级
class Course:
def __init__(self,name,period,price):
self.name=name
self.period=period
self.price=price
def tell_info(self):
print('<课程名:%s 周期:%s 价钱:%s>' %(self.name,self.period,self.price))
class People:
def __init__(self,name,age,sex):
self.__name = name
self.age = age
self.sex = sex
@property
def name(self):
return self.__name
@name.setter
def name(self, val):
self.__name = val
@name.deleter
def name(self):
print('不让删除')
class Student(People):
def __init__(self, name, age, sex):
People.__init__(self,name, age,sex)
def tell_stu_info(self):
print(f'学生姓名:{self.name} 学生年龄:{self.age} 学生性别:{self.sex}')
class Teacher(People):
def __init__(self, name, age,sex ,salary, grade):
People.__init__(self,name,age,sex)
self.salary = salary
self.grade = grade
def tell_tea_info(self):
print(f'老师姓名:{self.name} 老师年龄:{self.age} 老师薪资:{self.salary} 老师等级:{self.grade}')
students1=Student('张三',18,'男')
students1.name='zcc'
del students1.name
students1.tell_stu_info()
teacher1=Teacher('张老师',56,'男',5000,10)
# 创建课程
course_obj1=Course('python全栈开发','6mons',20000)
course_obj2=Course('linux运维','5mons',18000)
# 创建班级
class_obj1 = Class('脱产14期')
class_obj2 = Class('脱产15期')
class_obj3 = Class('脱产29期')
# 为班级关联课程对象
class_obj1.related_course(course_obj1)
class_obj2.related_course(course_obj2)
class_obj3.related_course(course_obj1)
# 创建学校
school_obj1=School('老男孩魔都校区','上海')
school_obj2=School('老男孩帝都校区','北京')
school_obj1.related_class(class_obj1)
school_obj1.related_class(class_obj2)
# 北京校区开了:脱产29期
school_obj2.related_class(class_obj3)