🔖 Справочник: итоги блока ООП

⚡ Кратко

Используйте эту страницу как шпаргалку: найдите нужную конструкцию, сравните синтаксис с примером и затем примените её в своём коде.

Множественное наследование

КонструкцияНазначение
class D(B, C):Наследование от нескольких родителей
D.__mro__Кортеж классов в порядке поиска
D.mro()Тот же порядок в виде списка
super().method()Вызов следующего метода в MRO

Миксины и hasattr

КонструкцияНазначение
hasattr(obj, "name")Проверка наличия атрибута
class LoggableMixin:Класс поведения без состояния

Инкапсуляция

ИмяУровеньПримечание
nameПубличныйДоступен отовсюду
_nameЗащищённыйСоглашение, доступен в наследниках
__nameПриватныйМанглируется в _ClassName__name

@property

@property
def value(self) -> int:
    return self.__value

@value.setter
def value(self, new_value: int) -> None:
    self.__value = new_value

Композиция vs Агрегация

ПризнакКомпозицияАгрегация
СозданиеВнутри классаПередаётся извне
СвязьЖёсткаяСлабая
Жизненный циклЗависит от внешнегоНезависим