12.3 类的组合
- 把对象当做变量值来用,当做形参/实参/返回值
- 类似于:把函数作为参数,作为返回值。
#简单的选课系统
#父类
class People:
def __init__(self,name,gender):
self.name=name
self.gender=gender
def eat(self):
print(f'{self.name}吃饭')
#子类:学生类
class Student(People):
def __init__(self,student_id,name,gender):
self.student_id=student_id
super().__init__(name,gender)
def choose_course(self,course):
self.course=course #组合 :把对象当做变量值来用,当做形参/实参/返回值
print(f'{self.name}选课{course.name}成功!')
#子类:老师类
class Teacher(People):
def __init__(self,level,name,gender):
self.level=level
super().__init__(name,gender)
def scored(self,student,score,course):
print(f'{self.name}老师给{student.name}课程{course.name}打分为{score}')
#课程类
class Course:
def __init__(self,name,price):
self.name=name
self.price=price
#管理员类
class Admin(People):
def create_course(self,course_name,price):
print(f'管理员{self.name}创建了课程{course_name}')
return Course(course_name,price)
#课程实例化
python=Course('Python','888')
linux=Course('Linux','666')
#学生
coco=Student('01','coco','male')
mike=Student('02','mike','male')
#老师
Jane=Teacher('1','Jane','male')
tank=Teacher('2','tank','female')
#管理员
egan=Admin('egan','female')
#业务逻辑
#1.创建课程
python=egan.create_course('python','888')
linux=egan.create_course('linux','666')
#2.学生选择课程
coco.choose_course(python)
#3. 老师给学生打分
Jane.scored(coco,98,python)
管理员egan创建了课程python
管理员egan创建了课程linux
coco选课python成功!
Jane老师给coco课程python打分为98