繁体   English   中英

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

[英]print statements in super constructor don't print

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

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

B()

此代码显示"B" 我的期望是它将打印

A
B

或至少

B
A

为什么只打印B?

  1. B类不继承A类
  2. 这不是一个好的语法,super不会调用构造函数,它返回对父类的引用(并且必须传递当前类的类型和对其的引用(自身))

更正:

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"

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

 super().__init__()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM