python中的super

super用于继承,同一父类只继承一次

普通继承

    class A:  
      def __init__(self):  
        print("Enter A")  
        print("Leave A")  
    class B(A):  
      def __init__(self):  
        print("Enter B")  
        A.__init__(self)  
        print("Leave B")  
    class C(A):  
      def __init__(self):  
        print("Enter C")  
        A.__init__(self)  
        print("Leave C")  
    class D(A):  
      def __init__(self):  
        print("Enter D")  
        A.__init__(self)  
        print("Leave D")  
    class E(B, C, D):  
      def __init__(self):  
        print("Enter E")  
        B.__init__(self)  
        C.__init__(self)  
        D.__init__(self)  
        print("Leave E")  

E()  

Enter E
Enter B
Enter A
Leave A
Leave B
Enter C
Enter A
Leave A
Leave C
Enter D
Enter A
Leave A
Leave D
Leave E

super继承

    class A:  
      def __init__(self):  
        print("Enter A")  
        print("Leave A")  
    class B(A):  
      def __init__(self):  
        print("Enter B")  
        super(B, self).__init__()  
        print("Leave B")  
    class C(A):  
      def __init__(self):  
        print("Enter C")  
        super(C, self).__init__()  
        print("Leave C")  
    class D(A):  
      def __init__(self):  
        print("Enter D")  
        super(D, self).__init__()  
        print("Leave D")  
    class E(B, C, D):  
      def __init__(self):  
        print("Enter E")  
        super(E, self).__init__()  
        print("Leave E")  

E()  

Enter E
Enter B
Enter C
Enter D
Enter A
Leave A
Leave D
Leave C
Leave B
Leave E

在super机制里可以保证公共父类仅被执行一次,至于执行的顺序,是按照MRO(Method Resolution Order):方法解析顺序 进行的。

推薦閱讀更多精彩內容

  • super() 的入门使用 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实...
    时间之友閱讀 133評論 0 0
  • Python进阶-继承中的MRO与super @(Python)[python, python进阶] [TOC] ...
    理查德成閱讀 1,179評論 2 10
  • 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法,但有时,我们希望能同时实现父类的功能,这时,我们就需...
    旅行的木讷閱讀 87評論 0 0
  • 原文出处: geekvi super() 的入门使用 在类的继承中,如果重定义某个方法,该方法会覆盖父类的同名方法...
    PyChina閱讀 364評論 0 1
  • 秋雨微凉划夜去,未见阑珊,潇细池中入。珠水难凝莲叶腐,残花落尽孤蓬伫。 昏暗灯光轻照路,泪水不禁,旧日台阶处。恍若...
    竖子小閱讀 84評論 0 0