Lioo 发表于 2018-9-22 22:26:15

领教了

Lioo 发表于 2018-10-2 23:56:16

应该懂了

张佳明0502 发表于 2018-10-31 19:10:52

求解答:使用super函数后,输出的结果
进入D...
进入B...
进入C...
为什么B后是C?

LXW19 发表于 2018-11-7 12:57:55

长见识了。

908105756 发表于 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…")

焰虎 发表于 2018-11-20 10:11:34

6

spector 发表于 2018-11-20 12:49:48

还是乖乖用super吧

甲鱼爸爸的爸爸 发表于 2018-11-25 13:55:05

牛逼啊老哥

sprewell 发表于 2018-11-30 18:45:54

两次就两次憋!

syf040916 发表于 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__() 的形式 就可以了。

李小控 发表于 2019-1-13 21:38:13

Super大法好

匕首码云 发表于 2019-1-18 11:46:25

Get it!

黑色四叶草 发表于 2019-2-2 14:36:31

热爱鱼C^_^

黑色四叶草 发表于 2019-2-4 11:26:14

鱼C有你更精彩^_^

小甲鱼学习 发表于 2019-2-13 11:00:03

还还是不明白怎么办

sswalker 发表于 2019-3-4 22:26:55

似懂非懂

dereksy 发表于 2019-3-5 17:21:06

学习了

sailor008 发表于 2019-3-8 11:16:41

牛批牛批~~

Anna0 发表于 2019-3-10 17:34:45

看不懂,直接super()

Roleplay 发表于 2019-3-12 19:51:34

膜拜

页: 1 2 3 4 5 [6] 7 8 9 10 11
查看完整版本: 多重继承的陷阱:钻石继承(菱形继承)问题