鱼C论坛

 找回密码
 立即注册
查看: 2785|回复: 5

super()如何支持多继承

[复制链接]
发表于 2019-9-23 11:18:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用super()函数 C类只继承了A类 如何用super()来实现多继承
如果给C类添加一个mixin类,如何在C类中重写的情况下保留mixin类中的属性?
图片1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-9-23 11:38:43 | 显示全部楼层
有顺序的,最完整的理解是C3算法,去看看
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-23 15:28:29 | 显示全部楼层
都淡忘 发表于 2019-9-23 11:38
有顺序的,最完整的理解是C3算法,去看看

c3我了解一些 super()属实用到了MRO顺序 表示在MRO元组中子类下一个的父类  super()只能继承一个 我想问的是 如果想继承多个父类
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-23 17:46:10 | 显示全部楼层
三木娄 发表于 2019-9-23 15:28
c3我了解一些 super()属实用到了MRO顺序 表示在MRO元组中子类下一个的父类  super()只能继承一个 我想问 ...

继承多个父类,但是一个类中的方法只会继承唯一的
手动传递即可,但是这样做的话那不就失去了继承的好处以及super()的强大之处了吗,
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-9-23 17:49:10 | 显示全部楼层
都淡忘 发表于 2019-9-23 17:46
继承多个父类,但是一个类中的方法只会继承唯一的
手动传递即可,但是这样做的话那不就失去了继承的好处 ...


super()会自动去寻找C类的__mro__中第一个有这个特性的方法的父类选择继承,
非要想去继承B类的,那就手动,B.__init__(self)即可
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-24 09:00:52 | 显示全部楼层
都淡忘 发表于 2019-9-23 17:49
super()会自动去寻找C类的__mro__中第一个有这个特性的方法的父类选择继承,
非要想去继承B类的,那就 ...

如果类中有重写,想通过__bases__+= 添加mixin类 类中的属性就没有办法继承了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-1-19 12:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表