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

⚡ Кратко

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

Вопрос 1. MRO

Какой порядок будет у класса D?

class A: pass
class B(A): pass
class C(A): pass
class D(B, C): pass
  • a. D → C → B → A → object
  • b. D → B → A → C → object
  • c. D → B → C → A → object
  • d. D → A → B → C → object

Вопрос 2. Ошибка в коде

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

class AuthMixin:
    def login(self):
        print(f"{self.username} вошёл.")


class User(AuthMixin):
    pass


user = User()
user.login()

Вопрос 3. hasattr()

Что делает функция hasattr()? Приведите пример использования в миксине.

Вопрос 4. Уровни доступа

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

  • a. Миксин обязательно должен содержать __init__().
  • b. super() в множественном наследовании учитывает порядок MRO.
  • c. Метод из ближайшего родителя переопределяет такие же методы других родителей.
  • d. super().method() всегда обращается к object.

Вопрос 5. Агрегация

Что характерно для агрегации?

  • a. Внешний объект управляет созданием вложенного элемента.
  • b. Внутренний элемент создаётся отдельно и передаётся извне.
  • c. Вложенный элемент полностью исчезает при удалении внешнего объекта.
  • d. Внутренний элемент обязан быть вложенным классом.

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

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

Вопрос 1

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

Вопрос 2

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

Вопрос 3

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

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

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

Вопрос 8

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