59207

第十一章 面向对象之类的组合

<p class="toc-title">目录

<ul><li>第十一章 面向对象之类的组合<ul><li>一、什么是组合</li> <li>二、为什么用组合</li> </ul></li> </ul> <h1 id="第十一章-面向对象之类的组合">第十一章 面向对象之类的组合

<h2 id="一什么是组合">一、什么是组合</h2>

组合就是一个类的对象具备某一个属性,这个属性的值是另外一个类的对象

<h2 id="二为什么用组合">二、为什么用组合</h2> <ul><li>

组合是用来解决类与类之间的代码冗余的Question

</li> <li>

需求:假如我们需要给学生增添课程属性,但是又不是所有的老男孩学生一进学校就有课程属性,课程属性是学生来老男孩后选出来的,也就是说课程需要后期学生们添加进去的

</li> <li>

实现思路:如果我们直接在学生中添加课程属性,那么学生刚被定义就需要添加课程属性,这就不符合我们的要求,因此我们可以使用组合能让学生未来添加课程属性

</li> <li>class People(): def __init__(self,name,age): self.name=name self.age=age class 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_price course=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参数可以存放对象</li> </ul>

来源:博客园

作者:得淼

链接:https://www.cnblogs.com/demiao/p/11425611.html

Recommend