python - class类 (四) 三大特性之一 :继承
继承:
#继承
#什么时候用继承?
# 1.当类之间有显著的不同,并且较小的类是较大的类的所需的组建时,用组合比较好.
# 2.当类之间有很多相同的功能,提取这些共同的功能做成基类,用继承比较好 # 单继承
class A():
M = 10000
def __init__(self,name):
self.name = name
def AA(self):
print("AA") class B(A):
pass class C(A):
M = 999999 #在dict属性字典里,B是没有父类A 的属性的.
print(A.__dict__)
print(B.__dict__) #实例化后,B继承了A的类属性以及函数属性
abc = B('anec')
print(abc.name)
print(abc.M)
print(abc.AA) #在C类中定义了M属性,所以访问M属性时,首先会从C类找M属性.
#C类中新增M属性与父类相同,并不覆盖父类的M属性
abc = C("abc")
print(abc.name)
print(abc.M)
print(A.M)
print(abc.AA) # 继承循序:
# python的类继承可以继承多个类,java和C#中则只能继承一个类
# python的类如果继承了多个类,那么其寻找方法的方式有两种:
# 深度优先
# 广度优先
#
# 当类是经典类时,多继承情况下,会按照深度优先方式查找
# 当类是新式类时,多继承情况下,会按照广度优先方式查找
#
# 经典类和新式类,从字面上可以看出一个老一个新,新的必然包含了更多的功能,也就是之后推荐的写法,
# 从写法上区分的类或者父类继承了object类,那么该类便是新式类,否则就是经典类. # 继承核心:
#python 如何实现继承的,对于你定义的每一个类,python会计算出一个方法解析顺序(MRO)列表
#这个MRO列表就是一个简单的所有基类的线性顺序列表 #为了实现继承python会在MRO列表上从左到右开始查找基类,直到找到第一个匹配这个属性的类为止.
# 而这个MRO列表的构造是通过一个C3线性算法来实现的.我们不去深究这个算法的数据原理
# 实际上就是合并所有父类的MRO列表并遵循如下三条准则
# 1.子类会优先于父类被检查
# 2.多个父类会根据他们在列表中的顺讯被检查
# 3.如果对下一个类存在两个合法的选择,选择第一个父类 # 新式类
#python3 以后都是新式类继承
class A(object):
def test(self):
print('A')
class B(A):
def test(self):
print('B')
class C(A):
def test(self):
print('C')
class D(B):
def test(self):
print('D')
class E(C):
def test(self):
print('E')
class F(D,E):
def test(self):
print('F') #查看继承规则:(新式类才有的方法)
print(F.mro())
#[<class '__main__.F'>, <class '__main__.D'>, <class '__main__.B'>, <class '__main__.E'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]
# 新式类继承顺序:(先将一侧的类查询至基类之前一个类,再查询另一边类至基类)
# F-D-B-E-C-A-object # 而经典类经常顺序为:(先将一侧的类查询完毕再查询第二类)
# F-D-B-A-E-C
python - class类 (四) 三大特性之一 :继承的更多相关文章
- Python面向对象之:三大特性:继承,封装,多态以及类的约束
前言: python面向对象的三大特性:继承,封装,多态. 1. 封装: 把很多数据封装到⼀个对象中. 把固定功能的代码封装到⼀个代码块, 函数, 对象, 打包成模块. 这都属于封装的思想. 具体的情 ...
- 浅谈python的对象的三大特性之继承
前面我们定义了人的类,并用这个类实例化出两个人jack和lily,查看了它们的内存空间. 现在我们再来看看类中所存在的对向对象编程的三大特性之继承的一些特性. 前面定义了一个人的类,可是我们还知道,人 ...
- python基础(24):面向对象三大特性一(继承)
1. 继承 1.1 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继 ...
- python学习 day23 面向对象三大特性之继承
### 面向对象三大特性值继承#### 1.什么是继承 继承是一种关系,必须存在两个对象才可能产生这种关系,在现实生活中的继承,王思聪可以继承王健林的财产 被继承的成为父,继承的一方成为子 在程序中, ...
- python - class类 (七) 三大特性 - 封装 结尾
封装: # 封装 #第一层,类就是麻袋,本身就是一种封装 #第二层,类中定义私有的,至在类的内部使用,外部无法访问 #第三层,封装在于明确区分内外,使得类实现者可以修改封装内的东西二不影响外部调用者 ...
- python - class类 (六) 三大特性 - 多态
多态的概念: # 多态的概念 # 指出了对象如何通过他们共同的属性和动作来操作及访问而不需考虑他们的具体的类 # 多态表明了动态绑定的存在,允许重载及运行时类型确定和验证. # 示例模拟: #水具有多 ...
- (转载)OC学习篇之---类的三大特性:封装,继承,多态
之前的一片文章介绍了OC中类的初始化方法和点语法的使用,今天来继续学习OC中的类的三大特性,我们在学习Java的时候都知道,类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今 ...
- 转 OC温故:类的三大特性(封装,继承,多态)
原文标题:OC学习篇之---类的三大特性(封装,继承,多态) 我们都知道,面向对象程序设计中的类有三大特性:继承,封装,多态,这个也是介绍类的时候,必须提到的话题,那么今天就来看一下OC中类的三大特性 ...
- OC学习篇之---类的三大特性(封装,继承,多态)
之前的一片文章介绍了OC中类的初始化方法和点语法的使用:http://blog.csdn.net/jiangwei0910410003/article/details/41683873,今天来继续学习 ...
随机推荐
- Spark_RDD之简单Java函数接口
函数名 实现的方法 用途 Function<T, R> R call(T) 接收一个输入值并返回一个输出值,用于类似 map() 和filter() 等操作中 Function2<T ...
- 最短路径——SPFA算法
一.前提引入 我们学过了Bellman-Ford算法,现在又要提出这个SPFA算法,为什么呢? 考虑一个随机图(点和边随机生成),除了已确定最短路的顶点与尚未确定最短路的顶点之间的边,其它的边所做的都 ...
- FTP文件乱码和传输模式解释
转: FTP文件乱码和传输模式解释 2017年02月18日 10:50:03 -Hermes- 阅读数:12112更多 所属专栏: 异常解决方案急诊室 版权声明:大侠,在转载时请注明出处,小弟不胜 ...
- gcc-linaro-arm-linux-gnueabihf交叉编译器配置
系统Ubuntu14.04 版本:gcc 版本 4.7.3 20130328 (prerelease) (crosstool-NG linaro-1.13.1-4.7-2013.04-20130415 ...
- springboot的跨域
https://www.cnblogs.com/520playboy/p/7306008.html 1.对于前后端分离的项目来说,如果前端项目与后端项目部署在两个不同的域下,那么势必会引起跨域问题的出 ...
- Makefile ------ .PHONY的作用
看下面的例子 Makefile文件 .PHONY: cleanclean: rm *.o 当Makefile文件所在目录有文件名为clean的文件,命令行“.PHONY: clean”又没添加的话,执 ...
- linux command ------ tar
-c: compress archives -x:decompress archives -t:check archives -z:whether it has the attribute of gz ...
- 三种数据库连接池的配置及使用(For JDBC)
DBCP 一.导包 Apache官网下载DBCP包,导入两个包路径如下: commons-dbcp-1.4-bin\commons-dbcp-1.4\commons-dbcp-1.4.jar:连接池的 ...
- koa的洋葱圈模型
拿以下这段代码为例: const Koa = require('koa'); const app = new Koa(); // x-response-time app.use(async (ctx, ...
- 我的 $OI$, 退役前写点东西
离 \(NOIp2018\) 还有五天, 总想写点什么 马上退役了啊 是什么时候喜欢上信息技术的呢 记不清了, 很小的时候就喜欢捣鼓关于电脑的东西 当时也不知道有算法这种东西 只是知道有黑客 巨 j8 ...