我有以下类型的超类/子类设置:
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可以做到这一点,但它有另一种方式吗?
感谢。
答案 0 :(得分:9)
除了使用super
之外,您的代码大多是正确的。您需要将当前的类名放在super
调用中,因此它将是:
super(SubClass, self).__init__()
由于您输入了错误的类名,因此未调用SuperClass.__init__
,因此未调用do_something
。