【问题标题】:How do I call python subclassed methods from superclass methods?如何从超类方法调用 python 子类方法?
【发布时间】:2011-12-08 19:27:47
【问题描述】:

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

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

谢谢。

【问题讨论】:

  • 现在SubClass的init不是调用SuperClass的init,而是SuperClass的超类的init,也就是object。所以 init 根本没有调用 do_something 。你确定这是你想要的行为吗?

标签: python subclass init super abc


【解决方案1】:

您的代码大部分是正确的,除了使用super。您需要将当前的类名放在super 调用中,所以它是:

super(SubClass, self).__init__()

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    • 1970-01-01
    相关资源
    最近更新 更多