python 的钻石继承问题
如果子类继承自两个单独的超类,而那两个超类又继承自同一个公共基类,那么就构成了钻石继承体系。这种继承体系很像竖立的菱形,也称作菱形继承。
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 的钻石继承问题相关推荐
- Python super钻石继承
1. Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object):def __init__ ...
- 深入super,看Python如何解决钻石继承难题
1. Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object):def __init__ ...
- Python super(钻石继承)
1. Python的继承以及调用父类成员 python子类调用父类成员有2种方法,分别是普通方法和super方法 假设Base是基类 class Base(object):def __init__ ...
- python新式类和经典类区别_Python中新式类和经典类的区别,钻石继承
1)首先,写法不一样: class A: pass class B(object): 2)在多继承中,新式类采用广度优先搜索,而旧式类是采用深度优先搜索. 3)新式类更符合OOP编程思想,统一了pyt ...
- 利用python画钻石_python入门 -- 钻石继承(菱形继承)
在面向对象(OOP)编程中,很多情况下会遇到多继承和多重继承的问题和坑,这里带对大家 认识一下其中的一个钻石继承(菱形继承)的问题. 什么时候会出现钻石继承(菱形继承)呢? 当在类树中,由多个类共享同 ...
- 利用python画钻石_day25 python学习 继承,钻石继承
通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性, 如何在子类中调用父类的方法, classAinmal: country='afdas' def __init__( ...
- 利用python画钻石_python多继承(钻石继承)问题和解决方法简单示例
本文实例讲述了python多继承(钻石继承)问题和解决方法.分享给大家供大家参考,具体如下: 在菱形多继承中,如果用父类.__init__()来调用父类的初始化方法,最上层会执行两次,所以遇到这种情况 ...
- day25 python学习 继承,钻石继承 多态
---恢复内容开始--- 通过一个列子认识父类和子类中,子类的如何实现对父类默认属性调用,同时拥有自己的属性,如何在子类中调用父类的方法,class Ainmal:country='afdas'def ...
- python钻石继承
如果子类继承自两个单独的超类,而那两个超类又继承自同一个公共基类,那么就构成了钻石继承体系.这种继承体系很像竖立的菱形,也称作菱形继承. class Base:def __init__(self, v ...
最新文章
- declspec(dllexport)与_declspec(dllimport) 异同
- go 编译 android arm,golang交叉编译
- linux xguest用户,在/etc/passwd中得到普通用户列表
- 代码在eclipse下不报错,在doc命令行下报错--jar file和runable jar file
- java切换jdk版本_切换JDK版本quick
- Oracle数据库完全卸载
- 深度学习2.0-19.随机梯度下降之可视化与实战
- 业界常用的技术评估指标和方法,
- LFLT1000 流量计密封性自动化测试系统
- 操作系统与网络实现 之二十三(丙)
- hi-3531a:minigui3.2.0移植
- 矩形法_加工难题:双头深矩形螺旋槽
- AI智能生图技术的未来趋势
- flutter 微信语言选择_#Flutter项目(3)之仿写微信通讯录界面
- [附源码]java毕业设计新能源汽车租赁管理系统
- 那些从来不用花呗的女孩
- 邮箱邮件收发件服务器怎么设置?
- 2019计算机学院年会主持稿,2019年会的主持词
- 闭关之 C++ 函数式编程笔记(一):函数式编程与函数对象
- 用jquery合并(去重)html表格中相同内容