2011-10-16 247 views
0

我有以下一種超/子類設置的:如何從超類方法中調用python子類的方法?

class SuperClass(object): 
    def __init__(self): 
     self.do_something() # requires the do_something method always be called 

    def do_something(self): 
     raise NotImplementedError 

class SubClass(SuperClass): 
    def __init__(self): 
     super(SuperClass, self).__init__() # this should do_something 

    def do_something(self): 
     print "hello" 

我想超初始化總是調用一個尚未實現的do_something方法。我使用python 2.7。也許美國廣播公司可以做到這一點,但它有另一種方式?

謝謝。

+2

現在,SubClass的init不調用SuperClass的init,而是調用SuperClass的超類,它是對象。所以init並沒有調用do_something。你確定這是你想要的行爲嗎? –

回答

8

您的代碼基本正確,除了使用super。你需要把當前的類名在super調用,所以這將是:

super(SubClass, self).__init__() 

既然你放錯了類名,SuperClass.__init__不叫,並因此被do_something也不叫。