Python_12 多继承与多态
一、查缺补漏
1. self和super的区别:self调用自己方法,super调用父类方法
当使用 self 调用方法时,会从当前类的方法列表中开始找,如果没有,就从父类中再找
而当使用 super 时,则从父类的方法列表中开始找,然后调用父类的这个方法。
2. Alt+回车 下载包
3. 国内源地址,和镜像有关
清华:https://pypi.tuna.tsinghua.edu.cn/simple
豆瓣:https://pypi.doubanio.com/simple/
网易:https://mirrors.163.com/pypi/simple/
阿里云:https://mirrors.aliyun.com/pypi/simple/
腾讯云:https://mirrors.cloud.tencent.com/pypi/simple
二、多继承
概念:一个类继承多个类,该类就拥有了多个类的方法和属性(私有的方法和属性除外)
语法:class 子类(父类1,父类2):
子类调用父类的方法和属性:super()方法使用和普通方法使用都遵循子类 --- 父类1 --- 父类2的查找顺序
Super()没有办法更改类继承的查找顺序,还是按照上面查找顺序查找
MRO表:表示类与类之间继承关系的图标,如果继承关系混乱有可能会报错
4. 多继承原则:不要让父类一下子是子类一下是父类,不要相互继承
三、多态:多态是指一类事务有多种形态,跟据使用情况,传入不同的参数,实现不同的功能,用在接口上的多
一些事务等同于同名的方法,相同特性的名称在不同类中展示,再根据调用不同的类结果也各不相同
四、动态设置属性(动态设置属性,增、删、改、查、判断)
_ dict _获取对象的所有属性,在类中是指实例属性,使用时展示出来的结果形似字典
setattr(参数1,参数2,参数3) 增加/修改属性
这里需要注意参数一也就是对象如果是对实例化对象做增加修改,
则是添加实例属性,如果对类本身增加修改,则是添加类属性
参数1:对象
参数2:属性的key
参数3:属性的value
属性存在就相当于修改
属性不存在就相当于添加属性
2. 接收值 = getattr(参数1,参数2,参数3) 获取/查询属性
参数1:对象
参数2:属性的key
参数3:非必传,value的默认值
当属性不存在的时候,会直接返回默认的value值,如果属性不存在,也没有设置value,会报错
当属性存在就返回属性对应的value
查询时可以查询类的其他属性,包括非实例属性(类属性)
3. delattr(参数1,参数2) 删除属性 只能删除类中的实例属性
参数1:对象
参数2:属性的key
4. hasattr(参数1,参数2) 判断属性是否存在
参数1:对象
参数2:属性的key
判断时可以判断类的其他属性,包括非实例属性(类属性),返回布尔值
在参数1中放类名称可以查看类属性,在参数1中放类的实例化对象可以即查看类属性又查看实例属性
Python_12 多继承与多态的更多相关文章
- Objective-C中的继承和多态
面向对象编程之所以成为主流的编程思想和他的继承和多态是分不开的,只要是面向对象语言都支持继承和多态,当然不同的OOP语言之间都有其特点.OC中和Java类似,不支持多重继承,但OOP语言C++就支持多 ...
- java中抽象、分装、继承和多态的理解
1.抽象.封装装.继承和多态是java面向对象编程的几大特点. 抽象:所谓抽象就是对某件事务,我们忽略我们不关心不需要的部分,提取我们想要的属性和行为,并且以代码的形式提现出来:例如我们需要对一个学生 ...
- [转] JS中简单的继承与多态
这里讲了一个最最最简单的JS中基于原型链的继承和多态. 先看一下以下这段代码的实现(A是“父类”,B是“子类”): var A = function(){ this.value = 'a'; this ...
- 网络电视精灵~分析~~~~~~简单工厂模式,继承和多态,解析XML文档,视频项目
小总结: 所用技术: 01.C/S架构,数据存储在XML文件中 02.简单工厂模式 03.继承和多态 04.解析XML文档技术 05.深入剖析内存中数据的走向 06.TreeView控件的使用 核心: ...
- OC的封装、继承与多态
面向对象有三大特征:封装.继承和多态. 一.封装 封装是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,而是通过该类所提供的方法来实现对内部信息的操作和访问.简而言之,信息隐藏,隐 ...
- 2、C#面向对象:封装、继承、多态、String、集合、文件(上)
面向对象封装 一.面向对象概念 面向过程:面向的是完成一件事情的过程,强调的是完成这件事情的动作. 面向对象:找个对象帮你完成这件事情. 二.面向对象封装 把方法进行封装,隐藏实现细节,外部直接调用. ...
- Java学习笔记 07 接口、继承与多态
一.类的继承 继承的好处 >>使整个程序架构具有一定的弹性,在程序中复用一些已经定义完善的类不仅可以减少软件开发周期,也可以提高软件的可维护性和可扩展性 继承的基本思想 >>基 ...
- JavaScript 面向对象程序设计(下)——继承与多态 【转】
JavaScript 面向对象程序设计(下)--继承与多态 前面我们讨论了如何在 JavaScript 语言中实现对私有实例成员.公有实例成员.私有静态成员.公有静态成员和静态类的封装.这次我们来讨论 ...
- Java继承和多态实例
我们知道面向对象的三大特性是封装.继承和多态.然而我们有时候总是搞不清楚这些概念.下面对这些概念进行整理, 为以后面向抽象的编程打下坚实的基础. 封装的概念还是很容易理解的.如果你会定义类,那么相信你 ...
- python基础——继承和多态
python基础——继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类.父类或超类 ...
随机推荐
- WPF-dataGrid动态更新
简介: 问题:在WPF中,使用了ObservableCollection<T>作为dataGrid的数据源,发现更新数据的时候不会触发dataGrid的更新 By MaQaQ 2023-1 ...
- MacOS M1芯片openmp库出现mach-o file, but is an incompatible architecture (have ‘arm64‘, need ‘x86_64‘问题解决
目录 1. 问题描述 2. 问题出现原因 3. 解决方案 编译安装 使用Homebrew安装 Reference 1. 问题描述 报错如下所示: ImportError: dlopen(/Users/ ...
- ansible(7)--ansible的file模块
1. file模块 功能:为被控端创建文件或目录,设定权限属性: 主要参数如下: 参数 说明 path 指定远程服务器的路径,也可以写成'dest','name' state 状态,可以将值设定为di ...
- SQL——连续出现的数字
SQL三个排序函数 ROW_NUMBER().RANK().DENSE_RANK() ROW_NUMBER()不并列 连续的 RANK()分组不连续排序(跳跃排序) DENSE_RANK()并列连续 ...
- GESP 202312 游记
day 0 把一本通上的指针扫了一遍,睡觉! day 1 9:00入场,在第二个考场. 冲进昌平二中,码了Hello,World!. 9:30发网址,开题 监考老师居然说阅读程序题可以打代码!···· ...
- HEOI 2024游记
(虽然是体验罢 HEOI2024游记 前 \(\,\,\)省选! \(\,\,\)得知省选可以报名体验的时候着实很兴奋 也是不假思索的就报了 Day 0 本来说是九点上大巴 结果硬生拖到十点半(恼 分 ...
- Calcite sql2rel 过程
sql2rel的过程是将SqlNode 转化成RelNode的过程 在 SqlToRelConverterTest中添加样例测试 @Test void testScan() { String sql ...
- kubernetes 之Health Check 健康检查
默认的健康检查 这里Pod的restartPolicy设置为OnFailure,默认为Always. [machangwei@mcwk8s-master ~]$ cat mcwHealthcheck. ...
- WPF没修改代码出现InitializeComponent报错的解决办法
问题不在于我们做错了什么,之前还好好的,我们什么都没做,就报错了.这完全不是我们的问题. 我的建议是,直接做绝一点,删除obj和debug文件夹,让他自己重新生成一次
- asp.net core api 3.1 dynamic 入参转json对象
比如接口 public object GetList(dynamic obj){ //var jElement=(JsonElement)obj;//使用system.text.json处理 var ...