灭霸 发表于 2022-9-28 16:52:33

super().__init__(arg)

醉于醒时 发表于 2022-9-30 23:08:13

111

hackcong 发表于 2022-10-2 22:33:16

{:5_90:}

20200223 发表于 2022-10-8 16:12:29

在类A中没有arg这个属性让E继承并传入参数

奥利奥BAO 发表于 2022-10-8 18:56:36

甚至还有隐藏内容^_^

萨影 发表于 2022-10-10 09:34:21


学习学习

因为菜所以卷 发表于 2022-10-10 09:39:38

1

因为菜所以卷 发表于 2022-10-10 16:24:13

完全明白了,不过小甲鱼例子可以再改进一下,如果再在super上下都加上输出可能会表述的更清楚

xxxyyy1452 发表于 2022-10-11 16:28:13

学习

whx_py 发表于 2022-10-12 21:56:34

答案

ccjcwc 发表于 2022-10-13 16:55:23

收藏了

略略略-~ 发表于 2022-10-13 22:47:28

已解决

641771687 发表于 2022-10-15 11:30:56

1

python渣渣顺 发表于 2022-10-17 14:28:33

B不用super().__init__()?

dami27 发表于 2022-10-19 14:46:03

学习

oldgandalf 发表于 2022-10-21 09:14:58

学习了~

madsen 发表于 2022-10-26 11:55:22

666

Mooven_Python 发表于 2022-10-27 12:07:12

mro顺序是e -> c -> a -> d -> b

Apple¥ 发表于 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)

王琳课题组 发表于 2022-10-28 12:45:18

因为父类均没有需要传入的参数
页: 1 2 3 4 [5] 6 7 8 9 10 11 12 13 14
查看完整版本: super() 这么优秀,官方也极力推荐,但这里面有些坑你们可能把握不住…