如何从超类方法调用子类方法?
我有一个这样的父类和子类的结构:
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
也没有被执行。