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

0 投票
1 回答
2589 浏览
提问于 2025-04-17 04:26

我有一个这样的父类和子类的结构:

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"

我希望父类的初始化方法(init)总是调用一个还没实现的 do_something 方法。我在用 Python 2.7。也许 ABC 可以做到这一点,但有没有其他方法呢?

谢谢。

1 个回答

9

你的代码大体上是对的,但在使用super的时候有点问题。你需要在super的调用中写上当前类的名字,所以应该是这样的:

super(SubClass, self).__init__()

因为你写错了类名,SuperClass.__init__没有被调用,所以do_something也没有被执行。

撰写回答