面向对象编程之组合

定义:一个对象中拥有另一个或其他多个对象的属性和方法

作用:减少代码的冗余,降低耦合度

关于耦合度的说明
耦合:通俗地讲,就是相互作用,相互影响的意思
耦合度越高,程序的可扩展性越低;
耦合度越低,程序的可扩展性越高。

组合和继承的区别

组合:对象与对象之间的关系,可理解成“什么有什么”的关系

继承:类与类之间的关系,子类继承父类属性,“从属”关系,即“什么是什么”的关系。

class Course:
"""课程类""" def __init__(self, course_name, course_price, course_duration):
"""课程名称,课程价格,课程时长"""
self.course_name = course_name
self.course_price = course_price
self.course_duration = course_duration def show_course(self):
"""输出课程信息"""
print(f"""
========课程信息========
课程名称:{self.course_name}
课程价格:{self.course_price}
课程时长:{self.course_duration}
""") class Student:
"""学生类""" def __init__(self, name, age, gender):
"""姓名,年龄,性别"""
self.name = name
self.age = age
self.gender = gender
self.course_list = [] def add_course(self, course_obj):
"""增加课程"""
self.course_list.append(course_obj)
# 使用了Course类的course_name 属性
print(f"课程{course_obj.course_name}添加成功!") def show_all_course(self):
"""显示学生课程表中所有课程信息"""
for course in self.course_list:
# 使用了Course类的show_course() 方法
course.show_course() # 创建学生对象
stu = Student("dawn", 27, "男")
# 创建课程对象
python_obj = Course("python", 28888, 6)
go_obj = Course("go", 77777, 5) # 将课程添加到学生对象中
stu.add_course(python_obj)
stu.add_course(go_obj) # 打印学生中所有的课程表信息
stu.show_all_course()

输出结果

课程python添加成功!
课程go添加成功! ========课程信息========
课程名称:python
课程价格:28888
课程时长:6 ========课程信息========
课程名称:go
课程价格:77777
课程时长:5

最新文章

  1. Torch7 Tensor切片总结
  2. C#Light/Evil合体啦
  3. 安卓activity生命周期
  4. WebApp 里Meta标签大全,webappmeta标签大全
  5. Java基础(53):内部类(转)
  6. ASP.NET MVC and jqGrid 学习笔记 6-增删改操作
  7. Servlet、SPringMVC、Struts等防止表单反复提交的多种处理方法
  8. HDU1007--Quoit Design(平面最近点对)
  9. GUI(自定义背景图片)
  10. 【原创】ligerGrid使用初长成
  11. node杂谈(一)
  12. 【EF6学习笔记】(四)弹性连接及命令拦截调试
  13. Guava future
  14. Android中的指纹识别
  15. oracle impdp导入脚本
  16. 0x17二叉堆之超市
  17. ubuntu18+gtx1060 +cuda9+cudnn-v7+opencv3.1.0 配置深度学习环境
  18. MySQL学习笔记-事务相关话题
  19. 机器学习之利用KNN近邻算法预测数据
  20. Java中com.jcraft.jsch.ChannelSftp讲解

热门文章

  1. python27期day15:自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys、作业题
  2. GitHub操作(五)
  3. Gson:
  4. Vs code背景图
  5. 清北学堂(2019 5 2) part 5
  6. A1083 List Grades (25 分)
  7. [LeetCode] 743. Network Delay Time 网络延迟时间
  8. Salesforce 开发整理(十一) 自定义放大镜查找效果
  9. JVM系列之六:内存溢出、内存泄漏 和 栈溢出
  10. ZROI1153 【线上训练3】数个数