超级构造函数中的print语句不打印

时间:2016-04-21 11:49:39

标签: python constructor init super

class A():
    def __init__(self):
        print("A")

class B():
    def __init__(self):
        super()
        print("B")

B()

此代码打印"B"。我的期望是打印

A
B

或至少

B
A

。 为什么只打印B?

2 个答案:

答案 0 :(得分:3)

  1. B类不继承A类
  2. 这不是很好的语法,super不会调用构造函数,它会返回对父类的引用(并且必须传递当前类的类型和对它的引用(self))
  3. 校正:

    class A(object):
      def __init__(self):
        print "A"
    
    class B(A): # Inherit A class
      def __init__(self):
        super(B, self).__init__()  # Call A constructor
        print "B"
    

答案 1 :(得分:1)

super本身只返回对父类的引用。您实际上需要调用相关方法:

 super().__init__()