鱼C论坛

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

[扩展阅读] super() 这么优秀,官方也极力推荐,但这里面有些坑你们可能把握不住…

  [复制链接]
发表于 2022-9-28 16:52:33 | 显示全部楼层
super().__init__(arg)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-30 23:08:13 | 显示全部楼层
111
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-2 22:33:16 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-8 16:12:29 | 显示全部楼层
在类A中没有arg这个属性让E继承并传入参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-8 18:56:36 | 显示全部楼层
甚至还有隐藏内容^_^
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-10 09:34:21 | 显示全部楼层

学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-10 09:39:38 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-10 16:24:13 | 显示全部楼层
完全明白了,不过小甲鱼例子可以再改进一下,如果再在super上下都加上输出可能会表述的更清楚
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-11 16:28:13 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-12 21:56:34 | 显示全部楼层
答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-13 16:55:23 | 显示全部楼层
收藏了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-13 22:47:28 | 显示全部楼层
已解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-15 11:30:56 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-17 14:28:33 | 显示全部楼层
B不用super().__init__()?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-19 14:46:03 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-21 09:14:58 | 显示全部楼层
学习了~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-26 11:55:22 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-27 12:07:12 | 显示全部楼层
mro顺序是e -> c -> a -> d -> b
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-28 11:21:52 | 显示全部楼层
本帖最后由 Apple¥ 于 2022-10-28 11:29 编辑

520这个参数被传入给C(A)后,520就不会再次被传入D(B),而D(B)中的arg需要arg这个参数,但是它没有获取到,如果要求D(B)不需要参数就可以跑,要想办法给D(B)传入数据,但是找不到方法传入
class A:
    def __init__(self,arg):
        super().__init__(arg)
        print("FishA")

class B:
    def __init__(self):
        super().__init__()
        print("FishB")
        
class C(A):
    def __init__(self, arg):
        super().__init__(arg)
        print("FishC")

class D(B):
    def __init__(self, arg):
        super().__init__()
        print("FishD")

class E(C, D):
    def __init__(self, arg):
        super().__init__(arg)
        print("FishE")

e = E(520)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-10-28 12:45:18 | 显示全部楼层
因为父类均没有需要传入的参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-23 17:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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