鱼C论坛

 找回密码
 立即注册
楼主: 小甲鱼

[扩展阅读] 多重继承的陷阱:钻石继承(菱形继承)问题

    [复制链接]
发表于 2018-11-7 12:57:55 | 显示全部楼层
长见识了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-15 16:01:41 | 显示全部楼层
为什么不直接这样
class A():
    def __init__(self):
        print("进入A…")
        print("离开A…")

class B(A):
    def __init__(self):
        print("进入B…")
        super().__init__()
        print("离开B…")
        
class C(B):
    def __init__(self):
        print("进入C…")
        super().__init__()
        print("离开C…")

class D(C):
    def __init__(self):
        print("进入D…")
        super().__init__()
        print("离开D…")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-20 10:11:34 | 显示全部楼层
6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-11-20 12:49:48 | 显示全部楼层
还是乖乖用super吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-25 13:55:05 | 显示全部楼层
牛逼啊老哥
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-11-30 18:45:54 | 显示全部楼层
两次就两次憋!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-12-1 08:47:41 | 显示全部楼层
刚试了一下,如果使class B 保持A.__init__(self), 而 class C 和 class D 中还是super().__init__()  则会C中__init__的不会执行。如果class B 改为super().__init__(), 不管class C 中的__init__ 怎样,class A的__init__都会执行,且执行一次。

所以,个人猜测super().__init__() 是按照继承的顺序来的,直接从第一个也就是class B 中找,B中没有super().__init__(), 就跳过C了,C也就没有被继承。故猜测这种菱形继承模式,保证前N-1个(假设继承N个类)的__init__用super().__init__() 的形式 就可以了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-13 21:38:13 | 显示全部楼层
Super大法好
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-18 11:46:25 | 显示全部楼层
Get it!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-2 14:36:31 | 显示全部楼层
热爱鱼C^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-4 11:26:14 | 显示全部楼层
鱼C有你更精彩^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-13 11:00:03 | 显示全部楼层
还还是不明白怎么办
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-4 22:26:55 | 显示全部楼层
似懂非懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-5 17:21:06 | 显示全部楼层
学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-8 11:16:41 | 显示全部楼层
牛批牛批~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-10 17:34:45 | 显示全部楼层
看不懂,直接super()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-12 19:51:34 | 显示全部楼层
膜拜

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-4-2 14:20:58 | 显示全部楼层
英文的重要性
这算法是真的6...
其实只需要super来越过雷区哈哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-2 16:39:05 | 显示全部楼层
所以super就是从左到右依次调用方法并且不会重复调用????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-4-2 17:50:39 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-4 07:57

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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