Задание 1. Порядок поиска метода
Условие: какой будет порядок поиска метода greet и что напечатает код?
class A:
def greet(self):
print("Hello from A")
class B(A):
pass
class C(A):
def greet(self):
print("Hello from C")
class D(B, C):
pass
d = D()
d.greet()
Что должно получиться: порядок классов в MRO и результат вызова.
Задание 2. Назначение super()
Условие: выберите верный вариант ответа.
Для чего используется super() в наследовании?
- a. Чтобы вызвать метод только родительского класса напрямую.
- b. Чтобы гибко переходить к следующему методу в MRO.
- c. Чтобы заменить метод родителя.
- d. Чтобы обратиться к базовому типу
object.
Что должно получиться: буква правильного ответа.
Задание 3. Конфликт имён в миксинах
Условие: что напечатает код?
class SaveMixin:
def process(self):
print("Saving...")
class PrintMixin:
def process(self):
print("Printing...")
class Document(SaveMixin, PrintMixin):
pass
doc = Document()
doc.process()
- a.
Saving… - b.
Printing… - c. Ошибка.
Задание 4. Сопоставьте понятия
Условие: сопоставьте понятие с описанием.
- Композиция
- Агрегация
- Вложенный класс
- a. Класс определён внутри другого класса.
- b. Объект создаётся и управляется внешним объектом.
- c. Объект передаётся извне и может существовать отдельно.
Задание 5. Тип связи
Условие: какая связь реализована в коде?
class Course:
def __init__(self, teacher):
self.teacher = teacher
- a. Композиция
- b. Агрегация
Задание 6. Класс Student
Условие: создайте класс Student, представляющий ученика.
- При создании указываются имя и email.
- Добавьте строковое представление студента (например, только имя).
- Добавьте метод
notify(message), который выводит сообщение:Email to <email>: <message>.
Пример вывода:
Alice
Email to alice@example.com: You have been enrolled.
Задание 7. Класс Course
Условие: создайте класс Course, представляющий учебный курс.
- При создании указывается название курса.
- У каждого объекта
Courseдолжно быть полеstudents, в котором хранится список зарегистрированных студентов. - Добавьте метод
add_student(student), который принимает объектStudentи добавляет его в курс. - Добавьте метод
show_students(), который выводит список имён студентов. - Добавьте метод
notify_all(message), который уведомляет всех студентов курса.
Пример вывода:
Students enrolled in Python OOP:
- Alice
- Bob
Email to alice@example.com: Welcome to the course!
Email to bob@example.com: Welcome to the course!