super().__init__() - Инициализация из родительского класса
Используется, в паттерне DRY, например.
[!info]
super().__init__()
- расположение имеет значение Если он будет снизу всех переменных, то вызов__init__()
родительского класса может переписать переменные с одинаковым именем.
В методе __init__
класса GreetingMix
не используется super()
- используется непосредственный вызов из базовых классов с указанием имён этих классов.
Из-за того, что метод __init__
присутствует в обоих базовых классах и происходит конфликт.
Интерпретатор при использовании функции super()
в нашем примере использовал бы метод того класса, который стоит левее при перечислении в объявлении производного класса.
Last updated