【Python】Python3 多继承的super init()问题
来源:互联网 发布:无间道3什么意思 知乎 编辑:程序博客网 时间:2024/06/08 19:08
class Song(): def __init__(self, author): self._author = authorclass Singer(): def __init__(self, name): self._name = nameclass Mtv(Song, Singer): def __init__(self, name, author): super().__init__(author) # init Song super(Song, self).__init__(name) # init Singermtv = Mtv('name', 'author')print('mtv._author =', mtv._author)print('mtv._name =', mtv._name)
# Mtv 的 MRO(<class '__main__.Mtv'>, <class '__main__.Song'>, <class '__main__.Singer'>, <class 'object'>)`# 运行结果mtv._author = authormtv._name = name
- Song 跟 Singer 不必呼叫 super
super(type, obj_or_type) 会按照 MRO 的顺序去委托 type 的 父类 或 兄弟类 的方法来调用
super().__init__(author) 会找到<class '__main__.Song'>
并调用其 __init__(author)
super(Song, self).__init__(name) 会找到<class '__main__.Singer'>
并调用其 __init__(name)不要一说到 super 就想到父类!super 指的是 MRO 中的下一个类!
不要一说到 super 就想到父类!super 指的是 MRO 中的下一个类!
不要一说到 super 就想到父类!super 指的是 MRO 中的下一个类!
在 MRO 中,基类永远出现在派生类后面,如果有多个基类,基类的相对顺序保持不变。
阅读全文
0 0
- 【Python】Python3 多继承的super init()问题
- python 27 super继承(解决多重继承时,老办法init父类多次的问题)
- python 27 super继承(解决多重继承时,老办法init父类多次的问题)
- python继承中super的问题
- python3 中多继承的顺序问题
- 关于python的继承,super关键字
- Python的多重继承和super
- Python学习:多继承和super()
- Python中多继承与super()用法
- Python super继承详解
- python之super的问题
- super init的初始化调用
- python super 继承
- python的super用法遇到的问题
- python学习——super()方法实现类的继承
- python3中super()的用法
- Python 类继承,两种初始化(init)的区别
- python普通继承和super继承
- 批处理
- 虚幻4为场景添加背景音乐的三种方法
- JZOJ 5490. 【清华集训2017模拟11.28】图染色
- weblogic双机集群部署详细图文配置文档
- PowerDesigner导入mysql文件注释丢失问题解决
- 【Python】Python3 多继承的super init()问题
- vue获取当前点击的元素并传值
- 665. Non-decreasing Array
- Spring security登录新增图片验证码
- 利用Python进行数据分析笔记-第二章
- VUE(三)
- <Android/Windows> bat脚本自动开关屏
- 构造方法
- CSS视频 选择器 27-32