Я склонен сделать это для согласованности и (немного) упрощения рефакторинга иерархии класса, но мне интересно, строго ли это или считается лучшей практикой.
Вызов super().__ init __() в классах, полученных из `object`?
Ответ 1
Вам не нужно инициализировать object
; его __init__
не является оператором. Тем не менее, это хорошая практика, поскольку позже вы можете ввести промежуточный класс в иерархию.
Ответ 2
Да, сделай это. Это хорошая привычка проникать, и это не повредит.
Ответ 3
ИМХО, это не имеет никакого смысла.
- Это позволяет вам дважды проверить наследование, чтобы понять, что он ничего не делает
- Это то же самое, что добавить оператор
pass
с накладными расходами на вызов функции. - Цитирование zen:
Although practicality beats purity.
- Python 3 не требует, чтобы объявить
object
как суперкласс.
Ответ 4
Да, и есть причина, почему вы должны это делать.
Если вам когда-либо понадобится использовать множественное наследование, порядок разрешения метода Python C3 (MRO) не будет вызывать все базовые классы __init__()
.