如果子类继承自两个单独的超类,而那两个超类又继承自同一个公共基类,那么就构成了钻石继承体系。这种继承体系很像竖立的菱形,也称作菱形继承。

class Base:def __init__(self, value):print("This is Base __init__")self.value = valueclass One(Base):def __init__(self, value):print("this is One __init__")super(One, self).__init__(value)self.value *= 2class Two(Base):def __init__(self, value):print("this is Two __init__")super(Two, self).__init__(value)self.value += 3class Ways(One, Two):def __init__(self, value):super(Ways, self).__init__(value)foo = Ways(5)
print(foo.value)

输出:

this is One __init__
this is Two __init__
This is Base __init__
16

对比下面一个:

class Base:def __init__(self, value):print('This is Base __init__')self.value = valueclass One(Base):def __init__(self, value):print('This is One __init__')super(One, self).__init__(value * 2)class Two(Base):def __init__(self, value):print('This is Two __init__')super(Two, self).__init__(value + 3)class Ways(One, Two):def __init__(self, value):super(Ways, self).__init__(value)foo = Ways(5)
print(foo.value)

输出:

This is One __init__
This is Two __init__
This is Base __init__
13

参考:

  https://blog.csdn.net/yangjiajia123456/article/details/80382583

python 的钻石继承问题相关推荐

  1. Python super钻石继承

    1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object):def __init__ ...

  2. 深入super,看Python如何解决钻石继承难题

    1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object):def __init__ ...

  3. Python super(钻石继承)

    1.   Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object):def __init__ ...

  4. python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承

    1)首先,写法不一样: class A: pass class B(object): 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. 3)新式类更符合OOP编程思想,统一了pyt ...

  5. 利用python画钻石_python入门 -- 钻石继承(菱形继承)

    在面向对象(OOP)编程中,很多情况下会遇到多继承和多重继承的问题和坑,这里带对大家 认识一下其中的一个钻石继承(菱形继承)的问题. 什么时候会出现钻石继承(菱形继承)呢? 当在类树中,由多个类共享同 ...

  6. 利用python画钻石_day25 python学习 继承,钻石继承

    通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性, 如何在子类中调用父类的方法, classAinmal: country='afdas' def __init__( ...

  7. 利用python画钻石_python多继承(钻石继承)问题和解决方法简单示例

    本文实例讲述了python多继承(钻石继承)问题和解决方法.分享给大家供大家参考,具体如下: 在菱形多继承中,如果用父类.__init__()来调用父类的初始化方法,最上层会执行两次,所以遇到这种情况 ...

  8. day25 python学习 继承,钻石继承 多态

    ---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal:country='afdas'def ...

  9. python钻石继承

    如果子类继承自两个单独的超类,而那两个超类又继承自同一个公共基类,那么就构成了钻石继承体系.这种继承体系很像竖立的菱形,也称作菱形继承. class Base:def __init__(self, v ...

最新文章

  1. declspec(dllexport)与_declspec(dllimport) 异同
  2. go 编译 android arm,golang交叉编译
  3. linux xguest用户,在/etc/passwd中得到普通用户列表
  4. 代码在eclipse下不报错,在doc命令行下报错--jar file和runable jar file
  5. java切换jdk版本_切换JDK版本quick
  6. Oracle数据库完全卸载
  7. 深度学习2.0-19.随机梯度下降之可视化与实战
  8. 业界常用的技术评估指标和方法,
  9. LFLT1000 流量计密封性自动化测试系统
  10. 操作系统与网络实现 之二十三(丙)
  11. hi-3531a:minigui3.2.0移植
  12. 矩形法_加工难题:双头深矩形螺旋槽
  13. AI智能生图技术的未来趋势
  14. flutter 微信语言选择_#Flutter项目(3)之仿写微信通讯录界面
  15. [附源码]java毕业设计新能源汽车租赁管理系统
  16. 那些从来不用花呗的女孩
  17. 邮箱邮件收发件服务器怎么设置?
  18. 2019计算机学院年会主持稿,2019年会的主持词
  19. 闭关之 C++ 函数式编程笔记(一):函数式编程与函数对象
  20. 用jquery合并(去重)html表格中相同内容

热门文章

  1. 将数组作为参数,调用该函数时候给的是数组地址还是整个数组
  2. c++读取文件–结束条件的判断
  3. python正则表达式试题_正则表达式练习题2
  4. python 操作mongo
  5. HTML 文档流和文本流的理解
  6. 频繁项集-------产生强关联规则的过程
  7. 同步Android与PC的时间
  8. html5 canvas 笔记五(合成与裁剪)
  9. Objective-C中的@property和@synthesize用法
  10. android 中 四舍五入的method */