Преимущества super()
в единичном наследовании минимальны - главным образом, у Вас нет к твердому коду названия базового класса в каждый метод, который использует его родительские методы.
Однако почти невозможно использовать множественное наследование без super()
. Это включает общие идиомы как mixins, интерфейсы, абстрактные классы, и т.д. Это расширяется на код, который позже расширяет Ваш. Если бы кто-то позже хотел записать класс, который расширился Child
и смешивание, их код не работал бы правильно.
Разве все это не предполагает, что базовый класс является модернизированным классом?
class A:
def __init__(self):
print("A.__init__()")
class B(A):
def __init__(self):
print("B.__init__()")
super(B, self).__init__()
не будет работать в Python 2. class A
, должен быть новый стиль, т.е.: class A(object)