Глава 14 · Создаём объекты реального мира

Итоги главы

От первого объекта — к моделям из нескольких сотрудничающих классов. Собираем всё воедино.

Инструментарий ООП, который у вас теперь есть

Итоговая карта главы 14
Основы
class, __init__, self
атрибуты и методы
экземпляр vs класс (14.7)
Инкапсуляция
_internal, __name
property и @x.setter
Отношения объектов
композиция — HAS-A (14.13)
наследование — IS-A (14.15)
super() (14.16)
Гибкость поведения
полиморфизм (14.18)
duck typing (14.19)
Современный Python
специальные методы (14.21)
@dataclass (14.23)
Проектирование
класс или не класс? (14.25)

Путь, который мы прошли

Объект = состояние + поведение
Класс описывает будущие объекты
__init__ настраивает состояние
self связывает метод с объектом
Отношения между объектами
Композиция: объект ХРАНИТ объект
Наследование: объект ЯВЛЯЕТСЯ объектом
Гибкость поведения
Полиморфизм
Duck typing
От одного объекта — к моделям из нескольких сотрудничающих классов

Что мы узнали в этой главе

  • ООП организует код вокруг объектов — состояния и поведения, собранных вместе.
  • class определяет чертёж; __init__ настраивает состояние уже существующего объекта, а не создаёт его.
  • self — не ключевое слово, а объект слева от точки, подставленный автоматически при связывании метода.
  • Атрибут экземпляра — свой у каждого объекта; атрибут класса — один на всех, и изменяемые значения там опасны.
  • Инкапсуляция и property защищают состояние, не меняя синтаксис снаружи.
  • Композиция (HAS-A) и наследование (IS-A) — два разных способа связать классы; выбор между ними определяется реальным отношением понятий, а не удобством.
  • Полиморфизм и duck typing позволяют коду работать с разными объектами одинаково, не проверяя их класс явно.
  • Специальные методы подключают объект к print(), ==, len() и другим встроенным операциям; @dataclass убирает шаблонный код там, где он не нужен.
  • Не каждая задача требует класса — это тоже часть проектирования, а не исключение из правил.
Дальше — глава 15: Python и файлы
Все объекты этой главы жили только пока работала программа: закрыли Python — и Player, и Korzina исчезли вместе с процессом. В следующей главе научимся сохранять данные на диск — в текстовые файлы и файлы CSV — чтобы состояние переживало перезапуск программы, а не терялось каждый раз.