Python继承 - 在子类中调用基类方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (91)

它让我感到困惑,因为我无法在任何地方找到清楚的解释。为什么以及何时需要在子类的同名方法内调用基类的方法?

class Child(Base):
    def __init__(self):
        Base.__init__(self)

    def somefunc(self):
        Base.somefunc(self)

我猜你在不想完全覆盖基类中的方法时会这样做。这真的就是这一切吗?

提问于
用户回答回答于

它完全取决于类和方法。

如果你只是想在base方法运行之前或之后做某些事情,或者用不同的参数调用它,你显然会在子类的方法中调用base方法。

用户回答回答于

当你想通过修改来扩展功能时,你会这样做,但不能完全替代基类方法。defaultdict就是一个很好的例子:

class DefaultDict(dict):
    def __init__(self, default):
        self.default = default
        dict.__init__(self)

    def __getitem__(self, key):
        try:
            return dict.__getitem__(self, key)
        except KeyError:
            result = self[key] = self.default()
            return result

还可以像这样做:

class BlahBlah(someObject, someOtherObject):
    def __init__(self, *args, **kwargs):
        #do custom stuff
        super(BlahBlah, self).__init__(*args, **kwargs) # now call the parent class(es)

扫码关注云+社区

领取腾讯云代金券