Ответ 1
Обычно вы делаете это, когда хотите расширить функциональность путем модификации, но не полностью заменяете метод базового класса. 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)