day29 Pyhton 面向对象 继承进阶
一.内容回顾
初识继承
父类\基类\超类
子类\派生类
派生 :派生方法.派生属性
单继承
继承的语法class子类名(父类名)
解决开发中代码冗余的问题
子类继承了父类之后,可以调用父类中的方法
如果子类的对象调用某个方法:对象/自己类/父类
如果子类的对象调用的某个方法父子类中都有:
正常情况下是用自己的
想用父类的:
super().方法名()
父类名.方法名(self)
继承表达的是两个类之间 父类子类的关系
二.今日内容
抽象类:规则
约束了所有继承这个抽象类的子类必须实现某些同名方法
# from abc import ABCMeta,abstractmethod
# class Abstract(metaclass=ABCMeta): # metaclass 元类
# @abstractmethod
# def func_name(self):
# print('继承Abstract的子类中必须有一个func_name的方法')
# class Son(Abstract):
# def func_name(self):
# print('继承了Abstract就必须写一个func_name方法')
接口类(对多个抽象类的多继承)
# class Abstract1(metaclass=ABCMeta): # metaclass 元类
# @abstractmethod
# def wahaha(self):
# print('继承Abstract1的子类中必须有一个wahaha的方法')
# class Abstract2(metaclass=ABCMeta): # metaclass 元类
# @abstractmethod
# def qqxing(self):
# print('继承Abstract2的子类中必须有一个qqxing的方法')
# class Son(Abstract1,Abstract2):
# def wahaha(self):
# print('继承Abstract1的子类中必须有一个wahaha的方法')
# def qqxing(self):
# print('继承Abstract2的子类中必须有一个qqxing的方法')
# 归一化设计
# class Student:
# def login(self):pass
# class Teacher:
# def login(self):pass
# def login(obj):
# obj.login()
# a = Student()
# a.login()
# b = Teacher()
# b.login()
# c3算法
# 求某一类在多继承中的继承顺序:
# 类的mro== [类] + [父类的继承顺序] + [父类2的继承顺序]....
# 如果从左到右的第一个类在后面的顺序中都没出现,那么就提出来到mro顺序中
# [ABCD] + [EO] --> A = [BCD] + [EO]
# 如果从左到右的第一个类在后面的顺序中出现,且在后面的顺序中也是第一位,那么就提出来到mro顺序中
# [ABCD] + [AEO] --> A = [BCD] + [EO]
# 如果从左到右的第一个类在后面的顺序中出现,但不是在第一位,那么应该继续往后找,找到符合规则的项目
# [ABCD] + [EAO] --> E = [ABCD] + [AO]
# [ABCD] + [EAO] + [GEO] --> G = [ABCD] + [EAO] + [EO]
# [ABCD] + [EAO] + [EO] --> GE = [ABCD] + [AO] + [O]
# 关键结论:
# 这个类没有发生继承,他的顺序永远是[类O]
# 只要是单继承,不是多继承,那么mro顺序就是从子类到父类的顺序
day29 Pyhton 面向对象 继承进阶的更多相关文章
- day30 Pyhton 面向对象 继承.装饰器
一面向对象相关 谈谈你对面向对象的理解 1.泛泛谈:什么情况下使用面向对象 2.针对面向对象的 封装 继承 多态一个一个的谈 3.根据你工作中的实际情况对应来举例子 封装 1.广义上:普遍的大家认为的 ...
- day28 Pyhton 面向对象 继承
1.昨日回顾 类的命名空间 静态属性\动态属性(方法) 对象的命名空间 #对象的属性 #类指针:对象能够通过这个类指针找到类 #静态属性:属于类,多个对象共享这个资源 #尽量用类名来操作静态属性 #对 ...
- day29 Pyhton 面向对象 多态 封装
# coding:utf-8 # py2中的经典类 # class D:#没有继承object是经典类# pass # # def func(self): # # print('d') # class ...
- [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...
- [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
[.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
- python学习第十六天 --继承进阶篇
这一章节主要讲解面向对象高级编程->继承进阶篇,包括类多继承介绍和继承经典类和新式类属性的查找顺序不同之处. 多继承 上一章节我们讲到继承,子类继承父类,可以拥有父类的属性和方法,也可以进行扩展 ...
- python面向对象编程进阶
python面向对象编程进阶 一.isinstance(obj,cls)和issubclass(sub,super) isinstance(obj,cls)检查是否obj是否是类 cls 的对象 1 ...
- 【转】python 面向对象(进阶篇)
[转]python 面向对象(进阶篇) 上一篇<Python 面向对象(初级篇)>文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 ...
- python 继承进阶
继承进阶 面向对象 1.类:具有相同属性和方法 的一类事物 类名可以实例化一个对象 类名可以调用类属性,(静态属性 和(方法)动态属性) 2.对象:也就是实例 对象名:调用对象属性 调用方法 3 ...
随机推荐
- (Python)正则表达式进行匹配
import os import re pattern=re.compile(r'(\d{4})-(\d{2})-(\d{2})-b(\d{3})') // 要匹配的目录格式 for root,dir ...
- 关于Vue-loader的那些事儿
什么是Vue-loader 一个webpack的加载器,负责将vue组件编译成普通的JavaScript模块. 关于webpack的介绍 这里呢?用到webpack,在项目的编译打包的过程中,将复杂的 ...
- 10.深入k8s:调度的优先级及抢占机制源码分析
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com 源码版本是1.19 上一篇我们将了获取node成功的情况,如果是一个优先pod获取nod ...
- burpsuite破解版2.0.11下载和部署
Burpsuite破解版下载: 链接:https://pan.baidu.com/s/1qVdrCogMN5OrEa8_zrXcEg 提取码:k7cb 一.安装步骤: 1.双击打开注册机 2.点击Ru ...
- Linux rndis_host 驱动的一个BUG与解决方案
关键字 rndis_host, linux, kernel, modem 综述 rndis 是微软定义的一套通讯方案.类似的协议还有 qmi/mbim/ecm/ncm. rndis 协议足够简单,可靠 ...
- node 进阶 | 通过node中如何捕获异常阐述express的特点
node如何捕获异常 node基于js的单线程,有了非阻塞异步回调的概念,但是在处理多个并发连接时,并发环境要求高,最重要的是单线程,单核CPU,一个进程crash则web服务都crash,但是为什么 ...
- github无法访问
打开 C:\Windows\System32\Drivers\etc 找到hosts文件. 添加以下代码 #github 192.30.255.112 github.com git 185.31.16 ...
- Node.js 从零开发 web server博客项目[项目介绍]
web server博客项目 Node.js 从零开发 web server博客项目[项目介绍] Node.js 从零开发 web server博客项目[接口] Node.js 从零开发 web se ...
- top、ps -ef、ps aux的区别及内容详解
1.top和ps的区别 ps是静态查看进程--------top是动态(持续监控)进程 ps只是查看进程-----------top还可以监视系统性能,如平均负载,cpu和内存的消耗 2.ps -ef ...
- shellcode生成框架
因为vs编译后自己会生成很多东西,我们稍微配置下 先获取kernel32基址 __declspec(naked) DWORD getKernel32() { __asm { mov eax, fs:[ ...