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,今天来继续学习 ...
随机推荐
- php-扩展模块查找下载网址
http://pecl.php.net/ 在该网页里面输入想要查找的扩展模块名 如: 搜索结果:
- Uva1001-floyd算法-建图
给出一些球,球内的时间为零,球之间的速度为10每单位. 给两个点,求最短时间. 把每一个球当做点,球间的距离就是floyd的d数组.之后跑一遍floyd wa了两发因为d数组定义成int了 #incl ...
- ROADS POJ - 1724(分层最短路)
就是在最短路的基础上 多加了一个时间的限制 , 多一个限制多一维就好了 记住 分层最短路要用dijistra !!! #include <iostream> #include < ...
- 【刷题】AtCoder Regular Contest 002
A.うるう年 题意:判断闰年 做法:.. #include<bits/stdc++.h> #define ui unsigned int #define ll long long #def ...
- SP1805 HISTOGRA (单调栈)
单调栈维护栈顶为高度最大的 记下来栈中每个元素入栈时顶掉的最靠左的一个位置(如果没顶掉就是它本身),那么在它出栈的时候,它所带来的面积就是(出栈位置-记录位置)*高度 (可能会有加一减一之类的细节) ...
- onTouchEvent方法的使用
手机屏幕事件的处理方法onTouchEvent.该方法在View类中的定义,并且所有的View子类全部重写了该方法,应用程序可以通过该方法处理手机屏幕的触摸事件.该方法的签名如下所示. public ...
- CF603E Pastoral Oddities
CF603E Pastoral Oddities 度数不好处理.转化题意:不存在连通块为奇数时候就成功了(自底向上调整法证明) 暴力:从小到大排序加入.并查集维护.全局变量记录奇数连通块的个数 答案单 ...
- scala生态圈概览
相信很多朋友都对 Scala 这个结合了面向对象编程范式和函数式编程范式的编程语言新宠有所耳闻吧?!那么一旦你所在的项目选择了 Scala 的技术栈,还有哪些工具,类库可以选择呢?各种类型的框架或者类 ...
- Makefile ------ := ?= += =的区别
Makefile 中:= ?= += =的区别 新建一个Makefile,内容为: ifdef DEFINE_VRE VRE = “Hello World!” endif ifeq ($(OPT),d ...
- 基于pycaffe的网络训练和结果分析(mnist数据集)
该工作的主要目的是为了练习运用pycaffe来进行神经网络一站式训练,并从多个角度来分析对应的结果. 目标: python的运用训练 pycaffe的接口熟悉 卷积网络(CNN)和全连接网络(DNN) ...