python全栈开发 * 20 继承知识点汇总 * 180530
20 面向对象的三大特征之一(继承,多态,封装)
-----继承
1.继承的定义: 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类;父类又可称为基类或超类,
新建的类称为派生类或子类 (子类可以继承父类的一切)
2.继承的写法:
Class 类名(类名1):
类名:子类 , 派生类
类名1:父类 , 基类
3.如果没有指定基类,python的类会默认继承object类,object是所有python类的基类,(python3x中)
4.最大特点:节省代码,与其它类发生关系.
5.子类如何找到父类的所有内容:
对象先在本类中找,如果没有,则通过本类中的"父类指针"找父类里的东西(只能单向找).
6.继承的分类:
(1)按版本分:
python3x (都是新式类)
类默认都继承object,继承object的类叫"新式类".
python2x
类默认什么都不继承,不继承object的类叫做"经典类".如果在Python2x中让他继承object就变成新式类.
(2)按继承数量分:
单继承:
新式类和经典类的查询顺序都是一直向上.
多继承:(钻石继承)
Python的类如果继承了多个类,那么其寻找方法的方式有两种,分别是:深度优先(经典类)和广度优先(新式类)
D
B(D) C(D)
A(B,C)
经典类:
首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去D类中找,
如果D类中么有,则继续去C类中找,如果还是未找到,则报错
新式类:首先去A类中查找,如果A类中没有,则继续去B类中找,如果B类中么有,则继续去C类中找,
如果C类中么有,则继续去D类中找,如果还是未找到,则报错
在上述查找过程中,一旦找到,则寻找过程立即中断,便不会再继续找了 多继承查询方式:
通过print(类名.mro())查询查找顺序.
新式类广度优先相关知识:
广度算法:用最少的次数走完每个节点.每个节点有且只走一次.
7. 如何在子类中执行父类方法 (两种方式)
(1).父类名.方法(父类需要的参数)
(2).super().__init__(self,父类需要的参数)
python全栈开发 * 20 继承知识点汇总 * 180530的更多相关文章
- python全栈开发 * 18 面向对象知识点汇总 * 180530
18 面向对象初识1class person: level="高级动物" mind="有思想" def __init__(self,name,age,gent, ...
- python全栈开发 * 23 面向对象 知识点汇总 * 180704
23 面向对象 -----特殊方法 1. isinstance(obj,类名) 判断对象是否是此类实例化或者此类的子类实例化出来的class A:passclass B(A):passb1=B()pr ...
- python全栈开发 * 22 面向对象 知识点汇总 * 180703
22 面向对象 -----属性,类方法,静态方法,反射一.属性1.属性的定义:将方法伪装成属性,虽然在代码层面上没有任何高深之处,但让其看起来更合理. (类似于属性的方法)class Person: ...
- python全栈开发 * 19 面向对象 知识点汇总 * 180701
19 面向对象初识2 一.类的名称空间1.对象的名称空间对象的名称空间中有类对象指针,对象可以通过"类对象指针"找类中的"静态变量"(静态字段),也可以用对象找 ...
- 巨蟒python全栈开发django9:一些知识点的汇总
回顾上周内容: 题目: 1.人民出版社出版过的所有书籍的名字以及作者的姓名(三种写法,笔记中有两种写法) 2.手机以2开头的作者出版过的所有书籍名称以及出版社名称(三种写法,笔记中有1种写法) 1.聚 ...
- Python全栈开发记录_第一篇(循环练习及杂碎的知识点)
Python全栈开发记录只为记录全栈开发学习过程中一些难和重要的知识点,还有问题及课后题目,以供自己和他人共同查看.(该篇代码行数大约:300行) 知识点1:优先级:not>and 短路原则:a ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
随机推荐
- Linux(CentOS)安装Node.JS和npm的两种方式(yum安装和源码安装)
yum安装 yum安装是将yum源中的rpm包下载到本地,安装这个rpm包.这个rpm包是别人编译安装好的二进制包.这种方式方便快捷,特别是不用考虑包依赖. 0.了解linux版本 通过 uname ...
- Unity应用架构设计(6)——设计动态数据集合ObservableList
什么是 『动态数据集合』 ?简而言之,就是当集合添加.删除项目或者重置时,能提供一种通知机制,告诉UI动态更新界面.有经验的程序员脑海里迸出的第一个词就是 ObservableCollection.没 ...
- canvas 水滴图、液体进度条、仿加速球、圆球水波图
传送门:https://github.com/guoyoujin/WaterMoire <!DOCTYPE html> <html lang="en"> & ...
- Spark 公共篇-InterfaceStability
本章内容: 1.源码 InterfaceStability 类包含三个注解,用于说明被他们注解的类型的稳定性. /** * Annotation to inform users of how much ...
- ubantu 14.04重置密码
https://blog.csdn.net/weixin_37909391/article/details/80691601
- amqp笔记
1.exchange message的生产者可以将消息发送给exchange,然后由exchange路由到不同的queue中. exchange有4种类型: direct exchange:msg只会 ...
- HTML5+CSS3 效果网站集合
1.jquery插件库 HTML5制作3D樱花漫天飞舞 http://www.jq22.com/jquery-info3547 2.17素材网 http://www.17sucai.com/pi ...
- 给centos7.3添加中文拼音输入法输入汉字
https://jingyan.baidu.com/article/86f4a73eaa0a6337d6526985.html
- websocket Tomcat JSP Demo
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...
- minicom for Mac 配置
安装:brew install minicom 配置: 串口是:dev/tty.usbserial minicons -s 配置一下: 流控要关掉,不然输入不了