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

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

  1. Выбрать результат вызова унаследованного метода.
  2. Выбрать преимущества наследования.
  3. Найти ошибку в использовании super().
  4. Определить результат issubclass(b, object) для объекта.
  5. Выбрать назначение isinstance.
  6. Создать класс Employee и проверить метод work().
  7. Создать класс Developer, расширяющий Employee.

Задание 1. Результат вызова унаследованного метода

Условие: что произойдёт при выполнении кода?

class Employee:
    def work(self) -> None:
        print("Employee is working")


class Manager(Employee):
    pass


person = Manager()
person.work()
  • a. Возникнет ошибка, так как Manager не имеет метода work().
  • b. Будет напечатано: Employee is working.
  • c. Будет напечатано: None.
  • d. Метод work() выполнится, но ничего не выведет.

Что должно получиться: верный вариант ответа.

Задание 2. Преимущества наследования

Условие: укажите, что относится к преимуществам наследования.

  • a. Повышение безопасности данных.
  • b. Возможность писать меньше кода.
  • c. Возможность скрыть поля от внешнего доступа.
  • d. Возможность переиспользовать логику.

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

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

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

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


class Programmer(Employee):
    def __init__(self, name: str, language: str) -> None:
        super(name).__init__()
        self.language = language

Что должно получиться: краткое объяснение ошибки и исправленный вариант.

Задание 4. Результат issubclass

Условие: что вернёт функция issubclass() и почему?

class Book:
    pass


b = Book()
print(issubclass(b, object))

Что должно получиться: объяснение результата.

Задание 5. Назначение isinstance

Условие: для чего используется функция isinstance?

  • a. Проверяет, является ли объект экземпляром заданного класса или его наследников.
  • b. Проверяет, что класс унаследован от object.
  • c. Проверяет тип переменной только для встроенных типов.

Что должно получиться: верный вариант ответа.

Задание 6. Класс Employee

Условие: создайте класс Employee, представляющий сотрудника.

  • У каждого объекта должно быть поле name.
  • Метод work() выводит строку: <имя> is working....
  • Проверьте работу класса, создав сотрудника и вызвав метод work().

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

Alice is working...

Задание 7. Класс Developer

Условие: создайте класс Developer, который расширяет Employee.

  • Добавьте дополнительное поле language.
  • Переопределите метод work(), чтобы он включал сообщение из родительского метода и добавлял строку: <имя> writes <язык> code.
  • Проверьте работу, создав объект Developer и вызвав метод work().

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

Bob is working...
Bob writes Python code.

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

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

Вопрос 1

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

Вопрос 2

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

Вопрос 3

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

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

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