📝 Практические задания

⚡ Задания в двух словах

  1. Сопоставьте 4 принципа ООП с описаниями.
  2. Выберите верный вариант про super().
  3. Определите результат isinstance().
  4. Найдите ошибку в классовом методе.
  5. Исправьте код: вызовите родителя через super().
  6. Создайте иерархию Person → Student / Teacher с полиморфным методом introduce().

Задание 1. Сопоставьте принципы ООП

Условие: сопоставьте понятие с его описанием.

  • 1. Наследование
  • 2. Полиморфизм
  • 3. Инкапсуляция
  • 4. Абстракция
  • a. Скрытие внутренней реализации и предоставление только нужного интерфейса
  • b. Поведение зависит от конкретного подкласса
  • c. Выделение общих характеристик для дальнейшей реализации
  • d. Повторное использование кода из базового класса

Что должно получиться: правильное соответствие цифр и букв.

Задание 2. Что делает super()?

Условие: выберите верный вариант.

  • a. Обращается к родителю по имени напрямую.
  • b. Создаёт экземпляр родительского класса.
  • c. Автоматически вызывает метод родителя, учитывая порядок наследования.
  • d. Удаляет метод родителя.

Задание 3. Результат isinstance()

Условие: что выведет код и почему?

class Animal:
    pass


class Dog(Animal):
    pass


d = Dog()
print(isinstance(d, Animal))

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

Условие: найдите и объясните ошибку.

class Book:
    @classmethod
    def info():
        print("Книга")

Задание 5. Исправьте код

Условие: перепишите Student, чтобы он использовал super() и не дублировал инициализацию имени.

class Person:
    def __init__(self, name: str) -> None:
        self.name = name


class Student(Person):
    def __init__(self, name: str, course: int) -> None:
        self.name = name  # дублирование
        self.course = course

Задание 6. Иерархия Person → Student / Teacher

Условие: создайте иерархию классов.

  1. Класс Person. У каждого человека есть имя. Метод introduce() выводит:
    Hello, my name is Alice.
  2. Класс Student на основе Person. У студента есть имя и номер курса. Метод introduce() сначала выводит базовое приветствие, затем:
    I'm on course 2.
  3. Класс Teacher на основе Person. У преподавателя есть имя и предмет. Метод introduce() выводит:
    Hello, I am professor Bob.
    My subject is Mathematics.
  4. Создайте список, содержащий Student и Teacher, и вызовите у всех introduce().

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

Hello, my name is Alice.
I'm on course 2.
Hello, I am professor Bob.
My subject is Mathematics.

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

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

Вопрос 1

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

Вопрос 2

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

Вопрос 3

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

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

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

Вопрос 8

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