Что «супер» делает в Python?

499
задан dreftymac 5 April 2017 в 21:08
поделиться

2 ответа

Преимущества super() в единичном наследовании минимальны - главным образом, у Вас нет к твердому коду названия базового класса в каждый метод, который использует его родительские методы.

Однако почти невозможно использовать множественное наследование без super(). Это включает общие идиомы как mixins, интерфейсы, абстрактные классы, и т.д. Это расширяется на код, который позже расширяет Ваш. Если бы кто-то позже хотел записать класс, который расширился Child и смешивание, их код не работал бы правильно.

285
ответ дан John Millikin 5 April 2017 в 21:08
поделиться

Разве все это не предполагает, что базовый класс является модернизированным классом?

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)

35
ответ дан Guillaume Jacquenot 5 April 2017 в 21:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: