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

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

  1. Выбрать верные утверждения об атрибутах класса.
  2. Выбрать верные утверждения о @classmethod.
  3. Найти ошибку в статическом методе.
  4. Создать класс City и метод расстояния между городами.
  5. Добавить в City альтернативный конструктор из строки.

Задание 1. Утверждения об атрибутах класса

Условие: укажите верные утверждения о полях класса.

  • a. Поле класса общее для всех объектов.
  • b. Поле класса создаётся внутри метода __init__().
  • c. Изменение поля через объект всегда меняет поле класса.
  • d. Поле класса можно прочитать через объект.

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

Задание 2. Утверждения о @classmethod

Условие: укажите верные утверждения о @classmethod.

  • a. Метод @classmethod получает первым аргументом self.
  • b. Метод @classmethod может создавать объект класса.
  • c. Метод @classmethod имеет доступ к атрибутам конкретного объекта.
  • d. Метод @classmethod вызывается только через класс, а не через объект.
  • e. Метод @classmethod имеет доступ к классу.

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

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

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

class Person:
    @staticmethod
    def greet(self):
        print("Hello!")

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

Задание 4. Расстояние между городами

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

  • У каждого города есть поля name, latitude, longitude.
  • Добавьте строковое представление объекта.
  • Добавьте метод distance(city1, city2), который возвращает кортеж (latitude, longitude) между двумя городами.
  • Проверьте расстояние между двумя городами.

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

City: Berlin (52.52, 13.4)
City: Paris (48.85, 2.35)
Distance: (3.67, 11.05)

Задание 5. Создание объекта из строки

Условие: доработайте класс City.

  • Добавьте метод from_string(data), который создаёт объект из строки вида "Rome:41.89,12.51".
  • Проверьте создание нового объекта через этот метод и выведите его.

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

City: Rome (41.89, 12.51)

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

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

Вопрос 1

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

Вопрос 2

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

Вопрос 3

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

Вопрос 4

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

Вопрос 5

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

Вопрос 6

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

Вопрос 7

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