📝 Задания урока

⚡ Кратко

Выполните задания по порядку: сначала базовые, затем практические. Перед просмотром решений проверьте код на нескольких примерах.

Задание 1. Безопасная флешка

Создайте класс SecureUSB, представляющий защищённую флешку.

  • При создании передаётся секретное содержимое и пароль.
  • Метод unlock(password) — возвращает True, если пароль верный, и разблокирует флешку.
  • Метод lock() — блокирует устройство.
  • Метод read() — возвращает сохранённые данные, если устройство разблокировано, иначе выбрасывает PermissionError.

Продумайте, какие поля следует скрыть, а какие оставить доступными.

Пример вывода:

Device is locked.
Access denied.
Access granted.
Data: Secret plans

Задание 2. Данные через свойство

Доработайте класс SecureUSB:

  • Переделайте метод read() в свойство data, используя @property.
  • Теперь доступ к содержимому осуществляется через обращение к usb.data, а не вызов метода.
  • При попытке чтения в заблокированном состоянии должно по-прежнему выбрасываться PermissionError.

Пример вывода:

Device is locked. Access denied.
Access granted.
Data: Secret plans

Задание 3. Викторина: уровни доступа

Укажите верные утверждения об уровнях доступа в Python:

  • a. Публичные атрибуты доступны везде.
  • b. Защищённые атрибуты запрещено использовать вне класса.
  • c. Приватные атрибуты создаются с одним подчёркиванием.
  • d. Защищённые атрибуты могут использоваться в дочерних классах.

Выберите верные варианты ответа.

Задание 4. Найдите ошибку

Найдите ошибку в коде:

class Book:
    def __init__(self, title: str) -> None:
        self.__title = title

    def show_title(self) -> None:
        print(__title)


book = Book("1984")
book.show_title()

Объясните, почему код не работает, и исправьте его.

Проверка понимания

Выберите один вариант ответа. После клика правильный ответ подсветится зелёным.

Вопрос 1

Что такое класс?

Вопрос 2

Что означает self?

Вопрос 3

Какой стиль имён переменных обычно рекомендует PEP 8?

Вопрос 4

Зачем использовать f-strings в современном Python?

Вопрос 5

Когда полезен ранний возврат из функции?

Вопрос 6

Что делает аннотация типа в Python?

Вопрос 7

Как лучше обрабатывать ожидаемую ошибку преобразования?