Глава 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 — чтобы состояние переживало перезапуск программы, а не терялось каждый раз.