组合: 一个类的对象是另外一个类对象的属性
# 组合
# 一个类的对象是另一个类对象的属性
# 什么时候使用组合:当两个类之间的关系是 :什么有什么的关系 : 班级有学生 学生有班级 班级有课程 图书有作者 学生有成绩
# 组合:  一个类的对象是另外一个类对象的属性

class Grade():
def __init__(self,class_name,course):
self.class_name = class_name
self.course=course class Course():
def __init__(self,name,price,period):
self.name=name
self.price = price
self.period = period py_course=Course("python",20000,"4months")
linux_course=Course("linux",10000,"3months") python22=Grade("python22全栈",py_course)
linux57=Grade("linux57运维",linux_course)
python23=Grade("python23全栈",py_course)
linux58=Grade("linux58运维",linux_course) print(python22.course.price) # 20000
print(linux57.course.period) # 3months linux_course.price=15000 #组合的好处,只需要修改作为属性的类对象的属性值,就可以修改到所有将此对象作为属性的类实例
print(linux57.course.price) # 15000
print(linux58.course.price) # 15000
组合: 一个类的对象是另外一个类对象的属性
# 组合
# 一个类的对象是另一个类对象的属性
# 什么时候使用组合:当两个类之间的关系是 :什么有什么的关系 : 班级有学生 学生有班级 班级有课程 图书有作者 学生有成绩
# 组合:  一个类的对象是另外一个类对象的属性

class Grade():
def __init__(self,class_name,course):
self.class_name = class_name
self.course=course class Course():
def __init__(self,name,price,period):
self.name=name
self.price = price
self.period = period py_course=Course("python",20000,"4months")
linux_course=Course("linux",10000,"3months") python22=Grade("python22全栈",py_course)
linux57=Grade("linux57运维",linux_course)
python23=Grade("python23全栈",py_course)
linux58=Grade("linux58运维",linux_course) print(python22.course.price) # 20000
print(linux57.course.period) # 3months linux_course.price=15000 #组合的好处,只需要修改作为属性的类对象的属性值,就可以修改到所有将此对象作为属性的类实例
print(linux57.course.price) # 15000
print(linux58.course.price) # 15000

python_面向对象_组合的更多相关文章

  1. Python_面向对象_类2

    类的几个装饰器方法: @classmethod (类方法):使之无法访问实例变量 class Animal(object): def __init__(self, name): self.name = ...

  2. Python_面向对象_类1

    面向对象:减少重复代码,提高效率,比函数式编程更高效 类的创建: 实例属性又称:成员变量,成员属性(或者字段) 面向对象的三大特性: 一.封装 把客观事物封装为抽象的类,并对外只暴露一个可用接口 使用 ...

  3. Python_面向对象_单例模式

    class A(object): pass a1 = A() a2 = A() print(a1 == a2)print(id(a1))print(id(a2)) 结果: False 23257231 ...

  4. python_面向对象进阶(7)

    第1章 面向对象特性—继承(补充) 1.1 接口类.抽象类介绍 1.2 接口类 1.3 接口类应用过程 1.3.1 第一版:完成多种支付方式接口 1.3.2 第二版: 归一化设计,统一支付方式 1.3 ...

  5. 黑马程序员_Java面向对象_内部类

    6.面向对象_内部类 1.内部类定义 内部类:将一个类定义在另一个类里面,对里面那个类就称为内部类.(内置类.嵌套类)内部类可以被私有修饰. 2.内部类访问规则 访问特点: 内部类可以直接访问外部类中 ...

  6. 类命名空间与对象、实例的命名空间 and 面向对象的组合用法

    类命名空间与对象.实例的命名空间 创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 静态属性就是直接在类中定义的变量 动态属性就 ...

  7. Python()- 面向对象的组合用法

    面向对象的组合用法 一个类中以另一个类的对象作为数据属性(一个类中引用另一个类的对象)一种 "有" 的关系: 比如:定义 1个人类 & 1个武器类 然后 张三 有 枪 李四 ...

  8. Python 进阶_OOP 面向对象编程_组合与继承

    #目录 前言 组合 派生 通过继承来覆盖重载方法 最常用的重载场景实例方法的重载 从标准类中派生类方法的重载 前言 我们定义一个类是希望能够把类当成模块来使用,并把类嵌入到我们的应用代码中,与其他的数 ...

  9. Python 入门基础20 --面向对象_继承、组合

    今日内容 组合:自定义类的对象作为类的属性 继承:父类与子类.多继承 1.组合 将自定义类的对象作为类的属性 class Teacher: def __init__(self, name): self ...

随机推荐

  1. ubuntu20 使用命令安装 redis

    安装 redis sudo apt-get install redis-server -y 配置文件 vi /etc/redis/redis.conf # 设置端口 port # 设置密码 requi ...

  2. Create a cursor from hardcoded array instead of DB

    https://stackoverflow.com/questions/18290864/create-a-cursor-from-hardcoded-array-instead-of-db Crea ...

  3. CMD/ENTROYPOINT区别

    CMD/ENTROYPOINT区别 相同点:都是指定一个容器:启动时要运行的命令 不同点(重点): CMD: dockerfile中可以有多个CMD指令,但是只有最后一个生效,CMD会被docker ...

  4. docker容器命令1

    docker容器命令 新建并启动容器命令 docker run INAME(镜像名字) 语法:docker run [OPTIONS] INAME [COMMAND] 例子:docker run -i ...

  5. ps 安装 ps 2017 下载 及教程(保姆式教程)

    链接:https://pan.baidu.com/s/1GJHiwmxwRApFYhyNZBCQtQ 提取码:7r6u 以上是百度网盘的地址. 1.下载解压安装前先断网在安装点击set-up 软件,之 ...

  6. 自定义Antd Pro 默认元素

    概要 通用元素 修改的方式 主页面 标签上的图标 logo 和 系统名称 footer 的配置 loading 页面 最终效果 概要 使用 Antd Pro 来开发前端项目时, 生成的项目模板中, 一 ...

  7. 微信小程序tabbar不显示2019.04.06

    app.json中pages的第一项必须在tabBar中,且这一项需要在pages的list中(与顺序无关)否则无法显示tabBar app.json中pages数组中第一项(首页),必须在tabBa ...

  8. PHP-fpm启动后没有查询到9000端口的问题

    Nginx与php-fpm通信的两种方式:tcp socket 和 Unix socket. Unix socket 是一种终端,可以使同一台操作系统上的两个或多个进程进行数据通信.这种方式需要再ng ...

  9. Docker学习笔记之-在虚拟机VM上安装CentOS 7.8

    虚拟机VM版本:VMware Workstation Pro 16 中文虚拟机软件专业版 到官网下载即可,或者也可以通过下边链接下载 下载地址: http://www.epinv.com/post/1 ...

  10. 纯JS自定义网页滚动条

    前言 由于最近在公司很忙,没什么时间更新,忙中抽时间做了一个JS滚动条,因为火狐浏览器与谷歌浏览器的滚动条自定义样式过于麻烦,所以我打算自己写个方便改样式的滚动条 CSS <style> ...