一:组合基础使用

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

继承:满足什么是什么的关系,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. 【LeetCode】980. Unique Paths III解题报告(C++)

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

  2. 【LeetCode】819. Most Common Word 解题报告(Python)

    作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 正则+统计 日期 题目地址:https://leet ...

  3. Go package(3):io包介绍和使用

    IO 操作的基本分类 在计算机中,处理文件和网络通讯等,都需要进行 IO 操作,IO 即是 input/ouput,计算机的输入输出操作. Go语言中的 IO 操作封装在如下几个包中: io 为 IO ...

  4. Log4j 2.17.0 再曝漏洞,但不要惊慌!

    最新消息!根据Log4j官网发布,2.17.0版本还存在漏洞! 上图来自Log4j2官网:https://logging.apache.org/log4j/2.x/ 漏洞编号:CVE-2021-448 ...

  5. delete、truncate、drop

    DELETE DELETE属于数据库DML操作语言,只删除数据不删除表的结构,会走事务,执行时会触发trigger:每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进 ...

  6. 乌龟NOI

    题目描述 一只乌龟由于智商低下,它只会向左或向右走,不过它会遵循主人小h的指令:F(向前走一步),T(掉头). 现在小h给出一串指令,由于小h有高超的计算能力,他可以马上知道乌龟最后走到哪里.为了难倒 ...

  7. Python中去除字符串中的单个或多个空格的方法总结

    python中去除字符串中空格的方法比较多,单个看起来也都比较简单 但是使用起来容易发生混淆 为了加深记忆 将常用的去除字符串中空格的方法汇总如下 方法一:strip()方法 >>> ...

  8. 论文翻译:2021_ICASSP 2021 ACOUSTIC ECHO CANCELLATION CHALLENGE: INTEGRATED ADAPTIVE ECHO CANCELLATION WITH TIME ALIGNMENT AND DEEP LEARNING-BASED RESIDUAL ECHO PLUS NOISE SUPPRESSION

    论文地址:https://ieeexplore.ieee.org/abstract/document/9414462 ICASSP 2021声学回声消除挑战:结合时间对准的自适应回声消除和基于深度学习 ...

  9. 【Java常用类】SimpleDateFormat

    文章目录 SimpleDateFormat 默认构造器实例化对象 默认构造器的格式化 带参构造器实例化对象 带参构造器的格式化 自定义格式 解析 SimpleDateFormat 默认构造器实例化对象 ...

  10. orleans集群及负载均衡实现

    netcore6项目,微服务框架选orleans ,国内似乎没什么项目在用,坑多无资料.orleans文档可以解决几乎,只能看官方资料. Introduction | Microsoft Orlean ...