Перейти к содержанию

Начало урока

Свойства и инкапсуляция

Защитите данные объектов чистым синтаксисом атрибутов и тихой проверкой

Главная идея: Инкапсуляция — это объединение данных с кодом, которому разрешено их изменять, и управление тем, как внешний мир читает или меняет эти данные. В Python атрибуты почти никогда не запирают полностью; вместо этого используют соглашения об именовании, чтобы обозначить намерение, и декоратор @property, чтобы запускать проверку в тот момент, когда атрибут читают или записывают — а вызывающий код по-прежнему пишет простое obj.value.
К концу вы сможете:
  • объяснить, что такое инкапсуляция и зачем она нужна,
  • правильно читать соглашения об одном _single и двух __double подчёркиваниях,
  • превратить метод в атрибут только для чтения с помощью @property,
  • добавить @x.setter, который проверяет каждую запись,
  • создавать вычисляемые (производные) свойства и понимать их компромиссы.

1. Что такое инкапсуляция?

Инкапсуляция — один из столпов объектно-ориентированного программирования. Это дисциплина: держать внутреннее состояние объекта закрытым и предоставлять остальной программе контролируемую, чётко определённую поверхность для работы. Объект становится ответственным за свои данные: он сам решает, какое значение допустимо, и никто снаружи не может тихо перевести его в сломанное состояние.

Представьте банкомат. Вы никогда не лезете внутрь машины, чтобы переложить наличные между лотками. Вы взаимодействуете через маленький защищённый интерфейс — вставить карту, ввести PIN, запросить сумму — и машина проверяет правила (верный PIN, достаточный баланс, дневной лимит), прежде чем притронуться к деньгам внутри. Лотки с наличными — это приватное состояние; клавиатура и экран — публичный интерфейс. Инкапсуляция — это проектирование классов таким же образом.

Без неё любая часть большой программы может залезть и установить account.balance = -9999, и вот у вас ошибка, которая могла родиться где угодно. С инкапсуляцией сам класс отказывается принимать недопустимые значения, поэтому ошибка ловится у источника.

Продолжите этот урок на YourAIZone

В полном уроке — объяснение целиком, разобранные примеры, частые ошибки, тесты с мгновенной проверкой и ИИ-репетитор. Начните сразу как гость или создайте аккаунт, чтобы сохранять прогресс.

В полном уроке

  • Объяснение целиком
  • Разобранные примеры
  • Частые ошибки и как их избежать
  • Тестовые вопросы: 15
  • ИИ-репетитор, который отвечает на вопросы по теме
  • Отслеживание прогресса для ученика, родителей и учителя