gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 16:56:39 26 4
gpt4 key购买 nike

令我困惑的是,我在任何地方都找不到对此的明确解释。为什么以及什么时候需要在子类的同名方法中调用基类的方法?

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

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

我猜您是在不想完全覆盖基类中的方法时才这样做的。真的只有这些吗?

最佳答案

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

关于Python继承 - 在子类中调用基类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10408739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com