博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十一章 面向对象之类的组合
阅读量:5291 次
发布时间:2019-06-14

本文共 1130 字,大约阅读时间需要 3 分钟。

目录

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

一、什么是组合

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

二、为什么用组合

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

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

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

  • 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参数可以存放对象

转载于:https://www.cnblogs.com/demiao/p/11425611.html

你可能感兴趣的文章
bootstrap学习笔记(6)
查看>>
leetcode : Valid Sudoku
查看>>
浅谈-Lambda
查看>>
storm 批处理(窗口)
查看>>
洛谷 P1052 过河
查看>>
Python3 从零单排28_线程队列&进程池&线程池
查看>>
java resources 红叉 Cannot change version of project facet Dynamic Web Module to 2.5
查看>>
阿里云 CentOS7.2 配置FTP+Node.js环境
查看>>
HttpWebRequest 发送简单参数
查看>>
Eclipse启动JVM机制
查看>>
一年的第几天
查看>>
leetcode 223: Rectangle Area
查看>>
Blender插件编写指南
查看>>
二次重建基本完成辣!
查看>>
PHP与Linux进程间的通信
查看>>
【长期更新】坑点合集
查看>>
wnmp windows 2012 r2+php7.0+nginx1.14安装
查看>>
weblogic与axis2 jar包冲突
查看>>
Hello Spring Framework——面向切面编程(AOP)
查看>>
解决java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Date
查看>>