Урок 77. Практикум 19
⚡ Кратко: суть темы
Электронная дверь с кодом. Практикум закрепляет инкапсуляцию, приватные атрибуты, пользовательские исключения и работу с datetime на сквозном примере класса Door.
- Код доступа хранится в приватном атрибуте
__code. - Проверку кода выносим в отдельный приватный метод, чтобы не дублировать логику.
- Блокировку после неудачных попыток реализуем через
datetimeиtimedelta. - Для ошибок «дверь заблокирована» создаём собственное исключение
DoorBlockedError.
Что запомнить: скрывайте внутреннее состояние объекта, не дублируйте проверки и используйте исключения для исключительных ситуаций.
Частая ошибка: забыть сбросить счётчик неудачных попыток после успешного открытия или смены кода.
📖 О чём этот урок
Практикум посвящён созданию класса Door — электронной двери с кодовым замком. Задания идут от простого к сложному: сначала базовая проверка кода, затем смена кода, блокировка после нескольких неудачных попыток и, наконец, пользовательское исключение для заблокированной двери.
Что изучим
- Инкапсуляцию. Какие атрибуты делать приватными, а какие оставить открытыми.
- DRY. Вынесение повторяющейся проверки кода в приватный метод.
- Работу с временем. Расчёт времени разблокировки через
datetime.now()иtimedelta. - Пользовательские исключения. Когда и как бросать
raise DoorBlockedError(...).