python多重继承super父类参数_Python super()函数使用及多重继承
super()函数可以用于继承父类的方法,语法如下:
super(type[, object-or-type])
虽然super()函数的使用比较简单,但是需要根据单继承和多继承来分析函数的调用关系。
首先,当类之间的继承关系为单继承时,函数调用关系也比较简单,可以参考如下的例子:
#!/usr/bin/env python3
class A(object):
def __init__(self):
print('class A')
class B(A):
def __init__(self):
super(B, self).__init__()
print('class B')
b = B()
上述代码运行结果如下:
class A
class B
从结果可以看出,子类B在实例化时调用了父类A的__init__()方法。
当进行多重继承时,需要考虑MRO的问题。所谓MRO,即Method Resolution Order,自Python2.3以来,MRO采用广度优先(区别于深度优先)的规则定义。为了更好的理解这个问题,让我们先来看如下的代码:
#!/usr/bin/env python3
class A(object):
def __init__(self):
self.n = 10
def minus(self, m):
print('minus in class A start')
self.n -= m
print('minus in class A end')
class B(A):
def __init__(self):
self.n = 7
def minus(self, m):
print('minus in class B start')
super(B, self).minus(m)
self.n -= 2
print('minus in class B end')
class C(A):
def __init__(self):
self.n = 12
def minus(self, m):
print('minus in class C start')
super(C, self).minus(m)
self.n -= 5
print('minus in class C end')
class D(B,C):
def __init__(self):
self.n = 15
def minus(self, m):
print('minus in class D start')
super(D, self).minus(m)
self.n -= 2
print('minus in class D end')
print('The MRO of class D is :')
print(D.__mro__)
d = D()
d.minus(2)
print(d.n)
代码运行结果:
The MRO of class D is :
(, , , , )
minus in class D start
minus in class B start
minus in class C start
minus in class A start
minus in class A end
minus in class C end
minus in class B end
minus in class D end
4
从运行结果可以看出,子类D的MRO为(, , , , ),也就是子类D的minus函数在调用父类函数时的调用顺序依次为BCA,而后续的调试打印信息也正好验证了该顺序。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
本文标题: Python super()函数使用及多重继承
本文地址: http://www.cppcns.com/jiaoben/python/311885.html
python多重继承super父类参数_Python super()函数使用及多重继承相关推荐
- python多重继承super父类参数_python – 多重继承如何与super()和不同的__init __()参数一起使用?...
我只是潜入一些更先进的蟒蛇科目(至少先进给我).我现在正在阅读有关多重继承,以及如何使用super().我或多或少的了解超级功能的使用方式,但(1)这样做是怎么回事? class First(obje ...
- dynamo python修改多个参数_python之函数
a.sort()没有返回值.而sorted(a)是有返回值的. Python的标准比较运算符:<.<=. > .>=. ==. != 函数用法和底层分析:函数是一个可重用的程序 ...
- python super().__init__()参数_python类中super()和__init__()的区别
单继承时super()和__init__()实现的功能是类似的 class Base(object): def __init__(self): print 'Base create' class ch ...
- python super详解_Python super 详解
说到 super, 大家可能觉得很简单呀,不就是用来调用父类方法的嘛.如果真的这么简单的话也就不会有这篇文章了,且听我细细道来. 约定 在开始之前我们来约定一下本文所使用的 Python 版本.默认用 ...
- python 函数参数_python之函数(二)——函数参数详解
今天,我们要学习的是函数中的一个重要的概念--参数. 废话不多说,直接进入正题,下面我们看一段简单代码: def add(a, b): # 1 形参 sum = a + b return sum a ...
- python自定义函数参数_python自定义函数的参数之四种表现形式
(1)def a(x,y):print x,y 这是最常见的定义方式,调用该函数,a(1,2)则x取1,y取2,形参与实参相对应,如果a(1)或者a(1,2,3)则会报错 (2)def a(x,y=3 ...
- python语言输入两个数_python的函数输入两个参数吗
本我我们要讨论的是关于函数的传参问题 对于函数:def fun(arg): print(arg) def main(): fun('hello,Hongten') if __name__== '__m ...
- python形式参数和实际参数_python学习笔记3:函数和参数
函数 函数的参数和返回值 形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参,下例中的peison 实参(实际参数): 在调用函数的时候输入的值:下例中的明月 de ...
- python什么是关键字参数_Python 函数 (关键字参数)
关键字参数 可变参数允许你传入0个或者任意个参数,这些可变参数在函数调用时会自动组装成一个tuple,而关键字参数允许你传入0个或者任意个含参数名的参数,这些参数在函数内部自动组装成为一个dict d ...
- python 类继承 父类初始化_python之子类继承父类时进行初始化的一些问题
直接看代码: classPerson:def __init__(self): self.name= "jack" classStudent(Person):def __init__ ...
最新文章
- linux基础-延时命令:sleep
- Vue Angular 双向绑定检测不到对象属性的添加和删除
- Remote Data Access
- ubuntu18安装DC2016
- 空心点_空心砖的新玩法,看完大开眼界
- 李洋疯狂C语言之编程实现统计某年某月份的天数
- linux 端口限速技术,linux下如何实现对每个IP进行限制带宽??
- JAVA中的适配器应用_Java适配器模式详解和实际应用.md
- 可靠型园区网组网,用VRRP还是堆叠?
- java.sql.Date – Java SQL日期
- ajax里面可以alert吗,Javascript和AJAX,仅在使用alert()时有效
- Python微博评论进行情感分析
- 常见js针对浏览器之间的兼容问题
- 太空中的特斯拉 一个大广告?
- React-滑条组件使用
- js 事件回调函数的对象属性说明:clientX、screenX、offsetX、pageX
- 分享CVPR2019(附会议视频全记录)
- 明日之后维尔市服务器找不到,明日之后 最新服务器互通计划来袭,快来看看有你们的服务器吗?...
- 华为mate40RS能升级鸿蒙,华为mate40rs快速开箱
- Big-man酷谈overflow
热门文章
- 阶段3 2.Spring_10.Spring中事务控制_3 作业-基于注解的AOP实现事务控制及问题分析_下...
- 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_2_对象的序列化流_ObjectOutputStream...
- 阶段1 语言基础+高级_1-3-Java语言高级_05-异常与多线程_第3节 线程同步机制_5_同步技术的原理...
- poj1270_toposort+回溯
- linux访问ftp服务器命令
- href 和 src 区别
- 异常为当IDENTITY_INSERT设置为OFF时 解决办法
- 如何复制或导出托管磁盘
- 【NOIP 模拟赛】Evensgn 剪树枝 树形dp
- 几个常用的JavaScript字符串处理函数