python组合
一:组合基础使用
组合: 就是一个对象拥有一个属性,该属性的值是另一个对象

继承:满足什么是什么的关系,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组合的更多相关文章
- 笔记-4:python组合数据类型
1.字符串(str) 字符串是字符的序列表示, 根据字符串的内容多少分为单行字符串和多行字符串. 单行字符串可以由一对单引号(') 或双引号(")作为边界来表示, 单引号和双引号作用相同. ...
- Python学习笔记(六)Python组合数据类型
在之前我们学会了数字类型,包括整数类型.浮点类型和复数类型,这些类型仅能表示一个数据,这种表示单一数据的类型称为基本数据类型.然而,实际计算中却存在大量同时处理多个数据的情况,这种需要将多个数据有效组 ...
- Python组合类型笔记
Python中常用的三种组合数据类型,分别是: - 集合类型 - 序列类型 - 字典类型 1. 集合类型: -集合用大括号{}表示,元素间用逗号分隔 -建立集合类型用{}或set() -建立空集合类型 ...
- python组合数据类型和数据结构
//2019.12-071.pyhton里面组合数据类型主要有三种:集合(set).序列(字符串str.列表list and 元组tuple)和映射(字典dic)2.集合类型一般使用大括号{}来进行表 ...
- 设计模式-结构型模式,python组合模式
设计模式上大的方向上分继承和组合,就是类模式和对象模式.此篇的组合模式非继承和组合概念中的组合.桥接 策略 代理 装饰者都用了组合,此组合非彼组合. 组合模式 组合模式(Composite Patte ...
- 用Python组合Celery Redis RabbitMQ进行分布式数据抓取
首先,记录下遇到的问题吧,在抓取的过程中为了避免IO操作,主要用Redis做插入缓存,当内存占用率很大时,会周期性的持续到Mysql里 虽然是拆东墙补西墙,但把数据抓取完毕后持续化可以慢慢进行,毕竟数 ...
- python 组合样例
class Bill(): def __init__(self, description): self.description = description class Tail(): def __in ...
- python基础——继承与派生、组合
python基础--继承与派生 1 什么是继承: 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类成为基类或超累,新建的类成为派生类或子类 1.1 继承分为:单 ...
- Arcgis-ModelBuilder和Python学习
老师的一个项目,需求如下: 1)arcgis版本使用9.2: 2)需要发布一个数据入库服务,第三方调用这个服务,就可以将“水窖”点位数据存入到服务器数据库中的“水窖”图层: 3)入库前需要检查“水窖” ...
随机推荐
- C语言补漏-逗号运算符与逗号表达式
1. 新名词? 今天看到一个新名词: 逗号表达式. C语言就有.额,怎么当时学习C没见过,一头雾水. 对我来说是新名词,其实它早就存在了,只是我还不知道. 2. 逗号表达式 C语言提供了逗号运算符-- ...
- 【LeetCode】678. Valid Parenthesis String 解题报告(Python)
[LeetCode]678. Valid Parenthesis String 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人 ...
- 1057 - Collecting Gold
1057 - Collecting Gold PDF (English) Statistics Forum Time Limit: 2 second(s) Memory Limit: 32 MB ...
- AUGMIX : A SIMPLE DATA PROCESSING METHOD TO IMPROVE ROBUSTNESS AND UNCERTAINTY
目录 概 主要内容 实验的指标 Dan Hendrycks, Norman Mu,, et. al, AUGMIX : A SIMPLE DATA PROCESSING METHOD TO IMPRO ...
- 当MySQL执行XA事务时遭遇崩溃,且看华为云如何保障数据一致性
摘要:当前MySQL所有版本不支持分布式事务的崩溃恢复安全,这严重影响了分布式事务的高可用保障. 华为云数据库内核高级技术专家,拥有十多年MySQL内核研发经验,目前在华为云数据库团队研发华为云数据库 ...
- Java实习生常规技术面试题每日十题Java基础(四)
目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...
- SQL Server 数据库添加主键,唯一键,外键约束脚本
-- 声明使用数据库use 数据库;go -- 添加主键(primary key)约束-- 基本语法-- 判断主键约束是否存在,如果存在则删除,不存在则添加if exists(select * fro ...
- Java二、八、十、十六进制介绍
1.说明 在Java中整数有四种表示方式, 分别为十进制,二进制,八进制,十六进制, 其中十进制就是平常最熟悉,使用最多的进制: 二进制是在计算机中使用最多的进制, 八进制和十六进制都是基于二进制的, ...
- 【】VMware vSphere中三种磁盘规格的解释说明
在VMware vSphere中,不管是以前的5.1版本,或者是现在的6.5版本,创建虚拟机时,在创建磁盘时,都会让选择磁盘的置备类型,如下图所示,分为: 厚置备延迟置零 厚置备置零 Thin Pro ...
- 图像数据到网格数据-2——改进的SMC算法的实现
概要 本篇接上一篇继续介绍网格生成算法,同时不少内容继承自上篇.上篇介绍了经典的三维图像网格生成算法MarchingCubes,并且基于其思想和三角形表实现了对样例数据的网格构建.本篇继续探讨网格生成 ...