⚖️ Старый vs Новый: выбор подхода
⚡ Кратко
Сравните два подхода и выбирайте более ясный и безопасный вариант, сохраняя старый синтаксис только для чтения существующего кода.
Наследование vs композиция
| Критерий | Наследование | Композиция/Агрегация |
|---|---|---|
| Отношение | is-a (является) | has-a (содержит/использует) |
| Жёсткость | Высокая | Низкая |
| Переиспользование | Через родителя | Через делегирование |
| Когда использовать | Естественная иерархия | Объект собирается из частей |
Прямой доступ vs @property
| Подход | Плюсы | Минусы |
|---|---|---|
| Прямой доступ | Простота | Нет валидации |
| Геттеры/сеттеры | Контроль | Многословность |
@property | Контроль + чистый синтаксис | Требует понимания декораторов |
Явный вызов родителя vs super()
# Плохо: жёсткая привязка к конкретному родителю
Parent.method(self)
# Хорошо: учитывает MRO
super().method()
В множественном наследовании super() предпочтительнее, так как он следует общему порядку разрешения методов.