目录
第十一章 面向对象之类的组合
一、什么是组合
组合就是一个类的对象具备某一个属性,这个属性的值是另外一个类的对象
二、为什么用组合
组合是用来解决类与类之间的代码冗余的问题
需求:假如我们需要给学生增添课程属性,但是又不是所有的老男孩学生一进学校就有课程属性,课程属性是学生来老男孩后选出来的,也就是说课程需要后期学生们添加进去的
实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性
class People(): def __init__(self,name,age): self.name=name self.age=ageclass Student(People): def __init__(self,name,age): self.course_list=[] super().__init__(name,age) def choose_course(self,course): self.course_list.append(course)class Course(): def __init__(self,course_name,course_price): self.name=course_name self.price=course_pricecourse=Course('语文',20000)#先给生成的course对象赋值student1=Student('ypp',18)#生成一个学生对象student1.choose_course(course)#把course对象传到student的choose_course()方法for course in student1.course_list: print(course.name)print(student1.__dict__)---------------------------------------------------语文------------------------------------------------{'course_list': [<__main__.Course object at 0x0000016A4928EE48>], 'name': 'ypp', 'age': 18}#可见student1参数可以存放对象