python全栈开发day20-类的三大特性继承、多态、封装
1 继承
1.怎么继承,父类和子类
class 类名(父类):pass
除了__init__下对象属性不能自动继承外,其他的类属性和动态方法,子类对象都可以访问到。
2.子类对象查找属性的顺序,对象现在自己的命名空间找,找不到会到通过执行类指针到自己类中找,再找不到就会到父类中去找。

3.子类怎么复用父类的动态方法,两种方法:以__init__为例。
1)、父类名.__init__(self,.....)
2)、super().__init(......) 或super(子类名,self).__init__(....)
具体执行流程:
4.类的组合
组合表示类的‘有‘ 关系,一个类可以是另一个类的属性。
而继承是表示类之间‘是‘的关系,可以节省类之间公有的方法和属性
5.单继承和多继承
单继承所有面向对象语言都有,多继承python有。
6.继承的作用。
减少代码的重用 提高代码可读性 规范编程模式

7.抽象类和接口类:接口提取了一群类共同的函数,可以把接口当做一个函数的集合。
# 在python代码中 抽象类和接口类没有明显的区别
# 主要就是维持了一种规范
目的:是为了规范继承这个类的子类,必须实现被@abstractmethod修饰的方法
抽象类:
#在类的继承位置指定metaclass==ABCMeta
#在指定的抽象方法上面用@abstractmethod装饰器装饰
# 特点:抽象类和接口类不能被实例化
抽象类和接口类的区别:
1) 多继承问题:
抽象类:尽量避免多继承
接口类:鼓励多接口继承
2)方法实现:
抽象类:可以对一些抽象方法做一些基础实现
接口类:任何方法都是一种规范,具体功能的实现在子类中完成。
8、两个原则:
接口隔离原则:使用多个专门的接口,而不使用单一的总接口。即客户端不应该依赖那些不需要的接口。
依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。换言之,要针对接口编程,而不是针对实现编程。
9、钻石继承:
1)经典类和新式类的区别:
子类和父类显示继承object类就是新式类,否则就是经典类,只在python2中区分,python3中全部都是新式类。
2)钻石继承
新式类:广度优先


经典类:深度优先。
2. 多态
3. 封装
python全栈开发day20-类的三大特性继承、多态、封装的更多相关文章
- python全栈开发day40-浮动的四大特性,浮动带来的问题和解决问题,文本属性、字体属性和颜色介绍
一.昨日内容总结 1.盒模型及其属性 2.文本级标签.行内块.块级标签 3.继承性.层叠性.权重 4.浮动四大特性 # 浮动元素脱离标准文档流 # 贴靠 # 字围效果 # 自动收缩或紧缩 二.今日内容 ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
- Win10构建Python全栈开发环境With WSL
目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- 学习笔记之Python全栈开发/人工智能公开课_腾讯课堂
Python全栈开发/人工智能公开课_腾讯课堂 https://ke.qq.com/course/190378 https://github.com/haoran119/ke.qq.com.pytho ...
- python全栈开发之正则表达式和python的re模块
正则表达式和python的re模块 python全栈开发,正则表达式,re模块 一 正则表达式 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的 ...
随机推荐
- web中的乱码处理
1 .web中的中文乱码处理 1.页面设置pageEncoding="UTF-8" <%@ page contentType="text/html;charset= ...
- vue错误记录
启动时报错如下 D:\QQFile\\FileRecv\industry_vue>cnpm run dev > vue_demo@ dev D:\QQFile\\FileRecv\indu ...
- 第二节--Servlet
1.在tomcat的webapp下新建一个web项目test 要有WEB-INF目录,其下有web.xml. 2.WEB-INF下文件是给tomcat使用的 3.用户访问localhost:848 ...
- Bleve代码阅读(一)——新建索引
引言 Bleve是Golang实现的一个全文检索库,类似Lucene之于Java.在这里通过阅读其代码,来学习如何使用及定制检索功能.也是为了通过阅读代码,学习在具体环境下Golang的一些使用方式. ...
- Linux之更改Nginx映射默认根目录
更改nginx映射默认根目录: 1.打开默认配置文件:sudo vi /etc/nginx/sites-available/default 2.修改配置:root /var/www/html/xx ...
- JavaScript之原生接口类设计
//接口类 var Interface = function(name , methods){ if(arguments.length!=2){ ...
- HDU2444 The Accomodation of Students【匈牙利算法】
题意: 有n个学生,有m对人是认识的,每一对认识的人能分到一间房,问能否把n个学生分成两部分,每部分内的学生互不认识,而两部分之间的学生认识.如果可以分成两部分,就算出房间最多需要多少间,否则就输出N ...
- H.264 SVC
视频厂商POLYCOM,VIDYO和RADVISION等都推出H.264 SVC技术.针对H.264 SVC技术做个介绍. CISCO和POLYCOM都提供了免版税的H.264 SVC的版本. 其中o ...
- Linux下搭建gtk+2.0开发环境
安装gtk2.0 sudo apt-get install libgtk2.0-dev 查看 2.x 版本 pkg-config --modversion gtk+-2.0 #有可能需要sudo ap ...
- css scrollbar样式设置
参考链接:https://segmentfault.com/a/1190000012800450