类的组合
- 组合就是一个类的对象具备某一个属性,该属性的值是指向另外一个类的对象
- 组合的好处:解决类与类之间代码冗余的问题
组合的应用
- 需求:假如我们需要给学生增添课程属性,但是又不是所有的学生一进学校就有课程属性,课程属性是学生选出来的,也就是说课程需要后期学生们添加进去
- 实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性
class People:
def __init__(self, name, age, gender):
self.name = name
self.age = age
self.gender = gender
class Student(People):
def __init__(self, student_id, name, age, gender):
super(Student, self).__init__(name, age, gender)
self.student_id = student_id
def choose_course(self, course):
print(f'{self.name} 选了 {course.name} 课程')
class Admin(People):
def create_course(self, course):
print(f'{self.name} 创建课程 {course.name}')
class Course:
def __init__(self, name, price):
self.name = name
self.price = price
# 生成一个管理员
adm = Admin('egon', 20, 'male')
# 创建课程
python = Course('python', 6666)
adm.create_course(python)
# 生成一个学生对象+选课
stud1 = Student('01', 'nick', 18, 'male')
stud1.choose_course(python)
egon 创建课程 python
nick 选了 python 课程