壹贰叁石头人 发表于 2022-3-8 15:55:48

super函数的调用次序看不懂


class A():
    def __init__(self):
      print("进入A…")
      print("离开A…")

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

class D(B, C):
    def __init__(self):
      print("进入D…")
      super().__init__()
      print("离开D…")>>> d = D()
进入D…
进入B…
进入C…
进入A…
离开A…
离开C…
离开B…
离开D…
这个运行的次序是怎么回事啊,他跟
class A():
    def __init__(self):
      print("进入A…")
      print("离开A…")

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

class D(B, C):
    def __init__(self):
      print("进入D…")
      B.__init__(self)
      C.__init__(self)
      p>>> d = D()
进入D…
进入B…
进入A…
离开A…
离开B…
进入C…
进入A…
离开A…
离开C…
离开D…
的调用次序为什么不一样

123458262 发表于 2022-3-8 15:56:45


2个写法都不一样,当然不一样了,后者都没用到菱形继承的效果
页: [1]
查看完整版本: super函数的调用次序看不懂