一:组合基础使用

组合: 就是一个对象拥有一个属性,该属性的值是另一个对象

继承:满足什么是什么的关系,is-a的关系 继承是一把双刃剑,单继承能实现就尽量少的继承,并不是继承的越多越好,反而越多找起来越繁琐

示例1:
class Foo:
def __init__(self,name):
self.name = name class Bar():
def __init__(self,n):
self.n = n obj = Foo(10)
obj1 = Bar(20) 该方法叫组合
一个对象拥有一个属性x,该属性的值是另一个对象,这就叫组合
obj.x = obj1 组合 将obj1的属性和方法赋值给了obj.x 所以输出结果相同
obj.x可以使用obj1的属性和方法
print(obj1.n) 输出结果: n:20
print(obj.x.n) 输出结果: n:20 字典添加值
print(obj.__dict__['x'])
创建k:v
obj.x = 1
打印obj.x的名称空间
print(obj.x.__dict__) 输出结果: {'m': 10, 'x': 1}

二:组合

示例2:选课系统
类 学生 课程 老师 学生类
class People():
school = 'SH' def __init__(self, name, age, gender, ):
self.name = name
self.age = age
self.gender = gender 课程类
class Course():
def __init__(self, name, period, price):
self.name = name
self.period = price ,
self.period = period 课程
python = Course('python', '6mon', 10000)
linux = Course('linux', '5mon', 20000) 多继承
class Student(People, Course): 课程名字 课程周期 课程价
def __init__(self, name, age, gender,course=None):
if course is None:
course = []
self.courses = course
super().__init__(name,age,gender,)
创建对象
stu = Student('lv', 20, 'male')
将课程对象有一个属性,该属性的值是另一个对象添加到列表里面
一个对象拥 这就是组合
stu.courses.append(python.name) 输出结果:python
stu.courses.append(linux.name) 输出结果:linux
组合 将linux的属性和方法赋值给了stu.courses
循环取出列表
for course in stu.courses:
print(course.name) 输出结果:python linux
 老师        多继承
class Teacher(People, Course):
def __init__(self, name, age, gender, level):
self.level = level
super().__init__(name, age, gender, )
tea = Teacher('ly', 19, 'male', 10)
这就是组合的概率
一个对象拥有一个属性,该属性的值是另一个对象
tea.course = linux
打印老师教的课程
print(tea.course.name) 输出结果:linux

python组合的更多相关文章

  1. 笔记-4:python组合数据类型

    1.字符串(str) 字符串是字符的序列表示, 根据字符串的内容多少分为单行字符串和多行字符串. 单行字符串可以由一对单引号(') 或双引号(")作为边界来表示, 单引号和双引号作用相同. ...

  2. Python学习笔记(六)Python组合数据类型

    在之前我们学会了数字类型,包括整数类型.浮点类型和复数类型,这些类型仅能表示一个数据,这种表示单一数据的类型称为基本数据类型.然而,实际计算中却存在大量同时处理多个数据的情况,这种需要将多个数据有效组 ...

  3. Python组合类型笔记

    Python中常用的三种组合数据类型,分别是: - 集合类型 - 序列类型 - 字典类型 1. 集合类型: -集合用大括号{}表示,元素间用逗号分隔 -建立集合类型用{}或set() -建立空集合类型 ...

  4. python组合数据类型和数据结构

    //2019.12-071.pyhton里面组合数据类型主要有三种:集合(set).序列(字符串str.列表list and 元组tuple)和映射(字典dic)2.集合类型一般使用大括号{}来进行表 ...

  5. 设计模式-结构型模式,python组合模式

    设计模式上大的方向上分继承和组合,就是类模式和对象模式.此篇的组合模式非继承和组合概念中的组合.桥接 策略 代理 装饰者都用了组合,此组合非彼组合. 组合模式 组合模式(Composite Patte ...

  6. 用Python组合Celery Redis RabbitMQ进行分布式数据抓取

    首先,记录下遇到的问题吧,在抓取的过程中为了避免IO操作,主要用Redis做插入缓存,当内存占用率很大时,会周期性的持续到Mysql里 虽然是拆东墙补西墙,但把数据抓取完毕后持续化可以慢慢进行,毕竟数 ...

  7. python 组合样例

    class Bill(): def __init__(self, description): self.description = description class Tail(): def __in ...

  8. python基础——继承与派生、组合

    python基础--继承与派生 1 什么是继承: 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类成为基类或超累,新建的类成为派生类或子类 1.1 继承分为:单 ...

  9. Arcgis-ModelBuilder和Python学习

    老师的一个项目,需求如下: 1)arcgis版本使用9.2: 2)需要发布一个数据入库服务,第三方调用这个服务,就可以将“水窖”点位数据存入到服务器数据库中的“水窖”图层: 3)入库前需要检查“水窖” ...

随机推荐

  1. c++ vector释放概述

    这里仅为概述,具体的详情分析,可以Google下,会得到更详尽的解释. 1.函数clear和erase都将数组的size清空,但对应的空间并没有回收,而且,一直push_baclk, 对应的capac ...

  2. 【LeetCode】140. Word Break II 解题报告(Python & C++)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 递归求解 日期 题目地址:https://leetc ...

  3. 获得MATLAB中FIG文件的矩阵

    在拓扑优化中,经常使用imagesc函数来显示最终的结果,往往会保存了Fig文件,却忘记保存mat文件. 根据已有的Fig文件,是可以找到其所显示矩阵.这个是我从fig数据结构中一层一层找到的,记录一 ...

  4. UVA11754 - Code Feat

    Hooray!  Agent Bauer has shot the terrorists, blown upthe bad guy base, saved the hostages, exposed ...

  5. 网站迁移纪实:从Web Form 到 Asp.Net Core (Abp vNext 自定义开发)

    问题和需求 从2004年上线,ZLDNN.COM运行已经超过16年了,一直使用DotNetNuke平台(现在叫DNN Platform),从最初的DotNetNuke 2.1到现在使用的7.4.先是在 ...

  6. WEB文档在线预览解决方案

    web页面无法支持预览office文档,但是却可以预览PDF.flash文档,所以大多数解决方案都是在服务端将office文档转换为pdf,然后再通过js的pdf预览插件(谷歌浏览器等已经原生支持嵌入 ...

  7. # 【jvm】01-双亲委派都会说,破坏双亲委派你会吗

    [jvm]01-双亲委派都会说,破坏双亲委派你会吗 欢迎关注b站账号/公众号[六边形战士夏宁],一个要把各项指标拉满的男人.该文章已在github目录收录. 屏幕前的大帅比和大漂亮如果有帮助到你的话请 ...

  8. .NetCore基于Jenkins和Gogs的自动化部署方案

    准备工作 Jenkins和gogs的安装配置可以看前两篇:Jenkins安装.配置与说明  和 gogs安装与说明(docker) 此外,因为还要安装.net core的SDK和Git工具: 安装.n ...

  9. Laravel Redis分布式锁的使用

    创建锁 use Illuminate\Support\Facades\Cache; $lock = Cache::lock('foo', 10); if ($lock->get()) { // ...

  10. YCSB_对mongodb做性能测试

    1.YCSB介绍 YCSB,全称为"Yahoo!Cloud Serving Benchmark",是雅虎开发的用来对云服务进行基础测试的工具,其内部涵盖了常见的NoSQL数据库产品 ...