2016-04-21 91 views
-1
class A(): 
    def __init__(self): 
     print("A") 

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

B() 

此代码打印"B"。我的期望是,它会打印超级构造函数中的打印语句不打印

A 
B 

或至少

B 
A 

。 为什么只打印B?

+0

那么,你根本不使用'A()',而是使用'main()'或'B()'。另外:什么是“超()”? – MERose

回答

3
  1. B类不继承类的
  2. 这是不好的语法,超不调用构造函数,它返回的引用,父类(和必须通过当前类的类型和引用它(个体))

校正:

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

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

super().__init__()