📝 Задания для самопроверки

⚡ Кратко

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

Вопрос 1. Сопоставьте понятия

Сопоставьте понятие с описанием:

  • 1. Абстрактный класс
  • 2. @abstractmethod
  • 3. ABC
  • a. Определяет обязательный метод без реализации
  • b. Класс, от которого нельзя создать объект напрямую
  • c. Базовый класс для создания абстрактных классов

Вопрос 2. Docstrings

Укажите верные утверждения о документации классов:

  • a. Документация пишется после объявления класса в тройных кавычках.
  • b. Документация классов должна содержать список атрибутов и методов.
  • c. Документация обязательна для всех методов.
  • d. Документация доступна через атрибут __doc__.

Вопрос 3. Найдите ошибку

from abc import ABC, abstractmethod

class Vehicle(ABC):
    @abstractmethod
    def move(self):
        print("Moving")

class Car(Vehicle):
    def drive(self):
        print("Driving")

c = Car()
c.move()

Вопрос 4. Итерация

Укажите верные утверждения:

  • a. __next__() должен выбрасывать StopIteration, когда элементы закончились.
  • b. Без __iter__() объект нельзя использовать в цикле for.

Вопрос 5. Сопоставьте методы сравнения

Сопоставьте метод с оператором:

  • 1. __eq__()
  • 2. __lt__()
  • 3. __ge__()
  • 4. __ne__()
  • 5. __gt__()
  • 6. __le__()
  • a. ==
  • b. !=
  • c. >
  • d. <
  • e. <=
  • f. >=

Вопрос 6. __getitem__ и __setitem__

Укажите верные утверждения:

  • a. __getitem__ используется для получения значения по индексу или ключу.
  • b. __getitem__ используется для получения значения по ключу.
  • c. __setitem__ позволяет удалять элемент из объекта.
  • d. __setitem__ автоматически запрещает пустые значения.

Вопрос 7. Сопоставьте арифметические методы

Сопоставьте метод с оператором:

  • 1. __iadd__()
  • 2. __mul__()
  • 3. __truediv__()
  • 4. __isub__()
  • 5. __add__()
  • a. +
  • b. -=
  • c. /
  • d. +=
  • e. *

Вопрос 8. Назначение методов

Сопоставьте метод с его назначением:

  • 1. __call__()
  • 2. __bool__()
  • 3. __iadd__()
  • 4. __str__()
  • a. Сложение с присваиванием
  • b. Делает объект вызываемым
  • c. Возвращает строковое представление объекта
  • d. Определяет, как объект ведёт себя в логических выражениях

Практика 1. Степень числа

Создайте класс Power, который при создании принимает степень, а при вызове как функции obj(x) возвращает x в эту степень.

square = Power(2)
cube = Power(3)
print(square(4))  # 16
print(cube(2))    # 8

Практика 2. Журнал оценок

Создайте класс StudentGrades, в котором:

  • можно добавлять оценку по предмету: grades["Math"] = 5;
  • повторное присваивание добавляет ещё одну оценку к тому же предмету;
  • получение grades["Math"] возвращает список всех оценок;
  • "Math" in grades проверяет, сдавался ли предмет;
  • len(grades) возвращает количество предметов.

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

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

Вопрос 1

Как лучше использовать summary-урок?

Вопрос 2

Что показывает хороший результат после повторения блока?

Вопрос 3

Какой вопрос стоит задать себе после каждого ответа?

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

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

Вопрос 8

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