2017-08-31 79 views
-1

我在試着用超級函數,下面是我執行的代碼。超級函數裏面調用python的方法2

class scene(object): 
    def enter(self): 
     print "a vllan s n your way. what you'll do?" 

class centralcorrdor(scene): 
    print "startng pont of the game." 
    super(centralcorrdor,self).enter() 


a = centralcorrdor() 

但是這會給出錯誤。

class centralcorrdor(scene): 
File "game.py", line 8, in centralcorrdor 
super(centralcorrdor,self).enter() 

NameError: name 'centralcorrdor' is not defined 

而這沒有。

class scene(object): 
    def enter(self): 
     print "a vllan s n your way. what you'll do?" 

class centralcorrdor(scene): 
    #print "startng pont of the game." 
    def func(self): 
     super(centralcorrdor,self).enter() 
    #scene.enter() 

a = centralcorrdor() 
a.func() 

有人能說出原因嗎?超級被從子類中的方法內部調用了嗎?

+1

您可以通過選擇代碼塊並單擊帶花括號的按鈕來格式化帖子中的代碼行。 – glibdud

+2

你似乎對類是如何工作感到困惑。爲什麼你會打電話給超級 - 或打印 - 在方法之外? –

+0

另外,鍵盤上的'i'鍵是否損壞?該代碼中有七個缺少'i's。 –

回答

0

super實際上是一個代理基類。有類代理(在靜態或類方法中定義)和實例代理(在實例方法中定義)。

您的super(centralcorrdor,self).enter()聲明傳遞自我作爲對象參數,並且如果您檢查enter簽名是self。因此,您必須在實例對象上調用它,而不是在類方法中。

一般來說,大部分時間你都會打電話給super(class, object)