0

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

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 可以做到这一点,但还有其他方法吗?

谢谢。

4

1 回答 1

9

您的代码大部分是正确的,除了使用super. 您需要将当前类名放入super调用中,因此它将是:

super(SubClass, self).__init__()

由于您输入了错误的类名,SuperClass.__init__因此没有被调用,因此do_something也没有被调用。

于 2011-10-16T17:29:23.697 回答