2011-10-16 59 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也不叫。