如何从超类方法调用python子类方法?

时间:2011-10-16 17:08:03

标签: python subclass init super abc

我有以下类型的超类/子类设置:

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"

我希望SuperClass init始终调用尚未实现的do_something方法。我正在使用python 2.7。也许ABC可以做到这一点,但它有另一种方式吗?

感谢。

1 个答案:

答案 0 :(得分:9)

除了使用super之外,您的代码大多是正确的。您需要将当前的类名放在super调用中,因此它将是:

super(SubClass, self).__init__()

由于您输入了错误的类名,因此未调用SuperClass.__init__,因此未调用do_something