⚖️ Старый vs Новый: выбор подхода

⚡ Кратко

Сравните два подхода и выбирайте более ясный и безопасный вариант, сохраняя старый синтаксис только для чтения существующего кода.

Наследование vs композиция

КритерийНаследованиеКомпозиция/Агрегация
Отношениеis-a (является)has-a (содержит/использует)
ЖёсткостьВысокаяНизкая
ПереиспользованиеЧерез родителяЧерез делегирование
Когда использоватьЕстественная иерархияОбъект собирается из частей

Прямой доступ vs @property

ПодходПлюсыМинусы
Прямой доступПростотаНет валидации
Геттеры/сеттерыКонтрольМногословность
@propertyКонтроль + чистый синтаксисТребует понимания декораторов

Явный вызов родителя vs super()

# Плохо: жёсткая привязка к конкретному родителю
Parent.method(self)

# Хорошо: учитывает MRO
super().method()

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