首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python继承-在子类中调用基类方法?

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

Stack Overflow用户
提问于 2012-05-02 14:27:12
回答 2查看 25.1K关注 0票数 16

这让我很困惑,为什么我在任何地方都找不到一个清晰的解释。为什么以及何时需要在子类的同名方法中调用基类的方法?

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

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

我猜想当你不想完全重写基类中的方法时,你可以这样做。这真的是所有的事情吗?

EN

回答 2

Stack Overflow用户

发布于 2012-05-02 14:37:36

通常,当您想要通过修改而不是完全替换基类方法来扩展功能时,可以这样做。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

请注意,执行此操作的适当方法是use super instead of directly calling the base class。如下所示:

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

Stack Overflow用户

发布于 2012-05-02 14:30:04

它完全依赖于类和方法。

如果你只是想在基方法运行之前/之后做一些事情,或者用不同的参数调用它,那么显然你可以在你的子类的方法中调用基方法。

如果你想替换整个方法,你显然不会调用它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10408739

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档