2016-04-21 76 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__()