[英]Python inheritance - calling base class methods inside child class?
令我感到困惑的是,我無法在任何地方找到明確的解釋。 為什么以及何時需要在子類的同名方法中調用基類的方法?
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
請注意,執行此操作的適當方法是使用super
而不是直接調用基類 。 像這樣:
class BlahBlah(someObject, someOtherObject):
def __init__(self, *args, **kwargs):
#do custom stuff
super(BlahBlah, self).__init__(*args, **kwargs) # now call the parent class(es)
它完全取決於類和方法。
如果您只想在基本方法運行之前/之后執行某些操作或使用不同的參數調用它,您顯然會在子類的方法中調用基本方法。
如果要替換整個方法,顯然不要調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.