先对比如下两段代码的区别:

1. 使用 父类.父类方法(self)的方式继承

class A:

def __init__(self):

print("Enter A")

print("Leave A")

class B(A):

def __init__(self):

print("Enter B")

A.__init__(self)

print("Leave B")

class C(A):

def __init__(self):

print("Enter C")

A.__init__(self)

print("Leave C")

class D(A):

def __init__(self):

print("Enter D")

A.__init__(self)

print("Leave D")

class E(B, C, D):

def __init__(self):

print("Enter E")

B.__init__(self)

C.__init__(self)

D.__init__(self)

print("Leave E")

E()

print(E.__mro__)

# 结果如下:

Enter E

Enter B

Enter A

Leave A

Leave B

Enter C

Enter A

Leave A

Leave C

Enter D

Enter A

Leave A

Leave D

Leave E

(, , , , , )

2. 使用 super(本类,self).父类方法() 的方式继承

class A:

def __init__(self):

print("Enter A")

print("Leave A")

class B(A):

def __init__(self):

print("Enter B")

super(B, self).__init__()

print("Leave B")

class C(A):

def __init__(self):

print("Enter C")

super(C, self).__init__()

print("Leave C")

class D(A):

def __init__(self):

print("Enter D")

super(D, self).__init__()

print("Leave D")

class E(B, C, D):

def __init__(self):

print("Enter E")

super(E, self).__init__()

print("Leave E")

E()

print(E.__mro__)

# 结果为:

Enter E

Enter B

Enter C

Enter D

Enter A

Leave A

Leave D

Leave C

Leave B

Leave E

(, , , , , )

在python3中以上两种继承方式的方法执行顺序相同,根据E.__mro__返回值,继承顺序如下图:

1547528484953.png

但可以看到实例化E后的结果不同,前者按深度优先原则,后者按广度优先原则,所以super保证了公共父类只执行一次。

python 多继承冲突_python:super()对多继承的影响相关推荐

  1. python 单一继承定义_Python学习之单继承与多继承

    继承 面向对象编程语言的一个主要功能就是"继承". 继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展. (1)单继承:pytho ...

  2. python修改父类属性_Python super和设置父类属性

    我对Python super()以及继承和属性有一个非常奇怪的问题.首先,代码:#!/usr/bin/env python3 import pyglet import pygame class Spr ...

  3. python类继承重复_python单例模式,可以继承,不会重复执行初始化函数的版本

    网上最长见的版本: 1 classSingleton(object):2 __instance=None3 def__init__(self):4 pass 5 def__new__(cls,*arg ...

  4. python封装继承多态_Python:封装、继承、多态、私有成员

    Python作为一种面向对象语言,也有着面向对象的三种特性:封装.继承.多态. 封装: 将事物相关的属性和方法封装在某一个类里面,使得在调用类创建实例时,可以不用关心类内部的实现细节. 类的本质: 1 ...

  5. java super extends_Java继承extends与super关键字

    版权声明:转载原创文章请以超链接形式请注明原文章出处,尊重作者,尊重原创! 恰饭广告 函数也称为方法! 继承:在java中使用extends关键字来表示继承关系.super用来继承父类方法和参数. 继 ...

  6. python 多继承与super使用详解_Python super()方法、多继承以及MRO顺序

    仅供学习,转载请注明出处 单独调用父类的方法 需求:编写一个类,然后再写一个子类进行继承,使用子类去调用父类的方法1. 使用方法1打印: 胖子老板,来包槟榔. 那么先写一个胖子老板的父类,执行一下: ...

  7. python继承中的参数_python 继承中的super

    python继承中子类访问父类的方法(包括__init__)主要有两种方法,一种是调用父类的未绑定方法,另一种是使用super(仅仅对于新式类),看下面的两个例子: #coding:utf-8 cla ...

  8. python面向对象思路_Python面向对象三要素-继承(Inheritance)

    Python面向对象三要素-继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承概述 1>.基本概念 前面我们学习了Python的面向对象三 ...

  9. python中的继承冲突及继承顺序

    python中的继承冲突及继承顺序 简单的菱形继承 设计类如下 #mermaid-svg-IYOh6g5InwMB9svy {font-family:"trebuchet ms", ...

  10. python 类和对象_Python零基础入门学习33:类与面向对象编程:类的继承

    注:本文所有代码均经过Python 3.7实际运行检验,保证其严谨性. 本文字数约1300,阅读时间约为3分钟. Python面向对象编程 类的继承机制 如果一个类A继承自另一个类B,就把继承者类A称 ...

最新文章

  1. python元组(tuple)使用示例+常用方法+列表(list)和元组(tuple)的异同?
  2. Vim快捷输出查找寄存器的内容(去除\,\和\V)
  3. 炸弹人游戏开发系列(6):实现碰撞检测,设置移动步长
  4. 一个http-request的源码及改进
  5. mysql中难以理解的sql
  6. I - Triple HDU - 5517
  7. [CQOI2012] 局部极小值(状压DP + 容斥 + 搜索)
  8. multi-mechanize error: can not find test script: v_user.py问题
  9. 如何设置基于Windows 2000/2003/20008平台下的智能域名服务器
  10. 信贷违约风险评估模型(中篇):特征工程
  11. Sharepoint 2010 对话框框架
  12. (转)金融从业者将被人工智能取代?
  13. 调查上网行为管理软件(或设备)
  14. java 生成der_java – 我们如何将字符串从PEM转换为DER格式
  15. java 表格识别_OpenCV3 识别图中表格-JAVA 实现
  16. 信息摘要技术 - SHA系列
  17. 【报告分享】头部DTC品牌增长案例库-易观智库零一裂变(附下载)
  18. 服务器运维的日常工作,运维工作人员日常工作重点有哪些?
  19. 联想新服务器怎么装系统教程,联想小新重装win7系统的详细教程图解
  20. js如何将时间的标准格式和时间戳格式和2022-01-27 00:00:00(年月日时分秒)格式相互转换

热门文章

  1. es6的模块化export和import
  2. java fail fast_Java集合中的fail-fast(快速失败)机制详解
  3. python中print输出格式_Python print格式化输出
  4. 一般试卷的纸张大小是多少_考试试卷统一设置标准规格要求
  5. 最新sfc模拟器安卓汉化版_卡车模拟器山货运卡车3D游戏安卓最新版 v1.0 卡车模拟器山货运卡车3D游戏下载...
  6. 抽象类应用模板方法模式和接口应用之策略设计模式
  7. matlab 离散积分器设置,MATLABSIULINK积分器相关操作.docx
  8. codeblocks解决网络方面错误undefined reference to `inet_ntoa@4'|
  9. 现代科学家运用电极计算机,纳米技术在现代生活中的应用
  10. Java虚拟机类加载器--双亲委派模型