面向对象编程之组合

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

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

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

组合和继承的区别

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

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

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

python基础-面向对象编程之组合的更多相关文章

  1. python基础-面向对象编程之继承

    面向对象编程之继承 继承的定义:是一种新建类的方式,新建的类称之为子类或派生类,被继承的父类称之为基类或超类 继承的作用:子类会""遗传"父类的属性,从而解决代码重用问题 ...

  2. python基础-面向对象编程之封装、访问限制机制和property

    面向对象编程之封装 封装 定义:将属性和方法一股脑的封装到对象中,使对象可通过"对象."的方式获取或存储数据. 作用:让对象有了"."的机制,存取数据更加方便 ...

  3. python基础-面向对象编程之反射

    面向对象编程之反射 反射 定义:通过字符串对对象的属性和方法进行操作. 反射有4个方法,都是python内置的,分别是: hasattr(obj,name:str) 通过"字符串" ...

  4. python基础-面向对象编程之多态

    面向对象编程之多态以及继承.抽象类和鸭子类型三种表现形式 多态 定义:同一种类型的事物,不同的形态 作用: 多态也称之为"多态性".用于在不知道对象具体类型的情况下,统一对象调用方 ...

  5. Python基础教程之List对象 转

    Python基础教程之List对象 时间:2014-01-19    来源:服务器之家    投稿:root   1.PyListObject对象typedef struct {    PyObjec ...

  6. Python基础教程之udp和tcp协议介绍

    Python基础教程之udp和tcp协议介绍 UDP介绍 UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议.UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但 ...

  7. python面向对象编程之组合

    前面讲了面向类与对象的继承,知道了继承是一种什么"是"什么的关系. 然而类与类之间还有另一种关系,这就是组合 先来看两个例子: 先定义两个类,一个老师类,老师类有名字,年龄,出生的 ...

  8. 2015/9/22 Python基础(18):组合、派生和继承

    一个类被定义后,目标就是把它当成一个模块来使用,并把这些对象嵌入到你的代码中去,同其他数据类型及逻辑执行流混合使用.有两种方法可以在你的代码中利用类.第一种是组合,就是让不同的类混合并加入到其他类中, ...

  9. python基础之继承组合应用、对象序列化和反序列化,选课系统综合示例

    继承+组合应用示例 1 class Date: #定义时间类,包含姓名.年.月.日,用于返回生日 2 def __init__(self,name,year,mon,day): 3 self.name ...

随机推荐

  1. Nginx 环境搭建 (windows)

    Nginx 环境搭建 (windows) 资源 # nginx在线文档和支持 For online documentation and support please refer to nginx.or ...

  2. QT控制文本框输入内容

    利用正则表达式,例: //即账号最长为10位,只能由数字组成 QRegExp regx("[0-9]{1,10}"); QValidator *validator = new QR ...

  3. Codechef August Challenge 2019 Division 2

    Preface 老年菜鸡终于开始打CC了,由于他太弱了所以只能打Div2 因为台风的原因challenge并没有写,所以水了个Rank7 A Football SB模拟题不解释 #include< ...

  4. [LeetCode] 650. 2 Keys Keyboard 两键的键盘

    Initially on a notepad only one character 'A' is present. You can perform two operations on this not ...

  5. [LeetCode] 393. UTF-8 Validation 编码验证

    A character in UTF8 can be from 1 to 4 bytes long, subjected to the following rules: For 1-byte char ...

  6. qt no doubments matching "ui..h" could be found

    问题情境描述: 自己单独添加的UI文件,然后添加一个类来使用这个UI文件,第一次输入UI Form名称时是大写,被添加到工程里面就是大写, 大写的情况下,添加action转到槽就会提示这个错误. 修改 ...

  7. 表单只有一项 input 时按回车键会提交表单

    在 Vue 中 使用 Element UI,使用表单  el-form 只有一个  el-input  项,使用  @keyup.enter.native 来处理回车事件. 结果发现按下回车时页面总会 ...

  8. mysql数据库备份工具xtrabackup

    1.下载二进制安装包 其他高版本测试缺少依赖 2.xtrabackup参数说明 简介:  Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写),是商业备份工 ...

  9. Spring Cloud(十四):Ribbon实现客户端负载均衡及其实现原理介绍

    年后到现在一直很忙,都没什么时间记录东西了,其实之前工作中积累了很多知识点,一直都堆在备忘录里,只是因为近几个月经历了一些事情,没有太多的经历来写了,但是一些重要的东西,我还是希望能坚持记录下来.正好 ...

  10. SourceTree 免登录

    SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作.同时它也是Mercurial和Subversion版本控制系统工具.支持 ...