Наследование, super() и переопределение методов
Содержание курса
Иерархия транспорта: наследование, super() и переопределение
Тебе нужно построить небольшую иерархию классов для описания транспортных средств: базовый класс и два подкласса, каждый из которых расширяет родителя через super() и переопределяет метод.
Что уже дано
Проверяющая система ничего не создаёт заранее. В редакторе есть незавершённый каркас с тремя классами и TODO-местами. Весь код выполняется в одном процессе и пространстве имён.
Что нужно сделать
Определи три класса на верхнем уровне:
Vehicle — базовый класс:
__init__(self, make: str, year: int)— сохраняетself.makeиself.year.describe(self) -> str— возвращает строку вида"{make} ({year})", например"Toyota (2020)".fuel_type(self) -> str— возвращает строку"unknown".
ElectricCar(Vehicle) — подкласс для электромобилей:
__init__(self, make: str, year: int, range_km: int)— вызываетsuper().__init__(make, year)и дополнительно сохраняетself.range_km.describe(self) -> str— вызываетsuper().describe()и добавляет к строке", range: {range_km} km", например"Toyota (2020), range: 400 km".fuel_type(self) -> str— возвращает"electric".
DieselTruck(Vehicle) — подкласс для дизельных грузовиков:
__init__(self, make: str, year: int, payload_tons: float)— вызываетsuper().__init__(make, year)и дополнительно сохраняетself.payload_tons.describe(self) -> str— вызываетsuper().describe()и добавляет", payload: {payload_tons}t", например"Volvo (2018), payload: 12.5t".fuel_type(self) -> str— возвращает"diesel".
Ввод и вывод
stdin не используется. Печатать через print в stdout ничего не нужно.
Проверяющая система создаёт экземпляры всех трёх классов и вызывает их методы напрямую. Твой код должен определить классы с нужными именами и поведением на верхнем уровне.
Пример использования
vehicles = [
ElectricCar("Volt", 2025, 600),
DieselTruck("Atlas", 2020, 8.5),
]
for vehicle in vehicles:
print(vehicle.describe(), "—", vehicle.fuel_type())
Результат:
Volt (2025), range: 600 km — electric
Atlas (2020), payload: 8.5t — diesel
О данных в ответах
Используйте учебные данные. Не вставляйте пароли, токены, ключи доступа, паспортные и банковские данные, а также персональные данные других людей. Политика обработки данных.
Как проверяется решение
Проверяются функции и их результаты. Собственный запуск выполняет ваш код без авторских тестов. Интерактивный запуск не влияет на оценку. Лимит сессии — 5 минут, процессорного времени — 10 секунд.
Отправьте решение, чтобы увидеть результаты тестов.
