Курс 3.4 · Раздел 04 · Урок 4.5

Задачи для самостоятельной работы

Разберём тему на понятных примерах и закрепим её практикой.

Ученик и ИИ-наставник изучают тему «Задачи для самостоятельной работы»
4.5 — Задачи для самостоятельной работы

Материал урока

Задача 1: Праздник ИИ (1\_Holiday.py)

Создай класс ИИ-событие (AIEvent) и его подклассы День старта ИИ (AILaunchDay) и День инноваций ИИ (AIInnovationDay).

При инициализации экземпляра класса AIEvent в качестве параметров необходимо указать название события и день его проведения в формате день-месяц. Этот класс реализует следующие методы:

  • \_\_str\_\_ — возвращает строку, представляющую собой имя класса с указанием названия и даты в формате: "<Имя класса>('<название>', '<день>')"
  • get\_season — возвращает время года, в которое проводится событие.

Класс День старта ИИ наследуется от AIEvent и, помимо стандартных параметров, принимает список проектов, которые будут запускаться в этот день.

Он реализует метод launch\_project, который вызывается с именем проекта в качестве аргумента. Если проект уже содержится в списке, то возвращается строка:

"Project <название проекта> is already scheduled for launch!"

Если же проект отсутствует, то он добавляется в список, и возвращается строка:

"Project <название нового проекта> is added and ready for launch!"

Также имеется метод get\_projects, позволяющий получить список проектов для запуска.

Класс День инноваций ИИ также наследуется от AIEvent и при инициализации получает список инноваций, которые будут представлены в этот день.

Он обладает методом get\_innovations, который возвращает этот список.

Для справки: Названия месяцев: March, April, May, June, July, August, September, October, November, December, January, February.

Названия сезонов: Spring, Summer, Autumn, Winter.

Пример решения:

from dataclasses import dataclass, field

from typing import List



@dataclass

class AIEvent:

    name: str

    date: str



    def __str__(self):

        pass



    def get_season(self):

        pass



@dataclass

class AILaunchDay(AIEvent):

    projects: List[str] = field(default_factory=list)



    def launch_project(self, project):

        pass



    def get_projects(self):

        pass



@dataclass

class AIInnovationDay(AIEvent):

    innovations: List[str] = field(default_factory=list)



    def get_innovations(self):

        pass





# Примеры использования

ai_event = AIEvent("General AI Conference", "15-October")

print(ai_event)

print(f"Season: {ai_event.get_season()}")



launch_day = AILaunchDay("AI Launch Event", "1-January", ["AI Assistant", "Smart Drone"])

print(launch_day)

print(launch_day.launch_project("AI Assistant"))  # Проект уже в списке

print(launch_day.launch_project("AI Vision System"))  # Новый проект

print(f"Projects: {launch_day.get_projects()}")



innovation_day = AIInnovationDay("AI Innovation Day", "20-March", ["Self-learning Algorithm", "Quantum AI"])

print(innovation_day)

print(f"Innovations: {innovation_day.get_innovations()}")

---

Задача 2: Транспортные средства (2\_Vehicles.py)

Реализуй только иерархию классов транспортных средств; методы и атрибуты добавлять не нужно. Базовый класс Transport имеет четыре подкласса:

  • WaterTransport: Boats, Yachts, CruiseShips, WaterCargoTransport;
  • Aircrafts: Planes, Helicopters, Airships, Balloons;
  • LandTransport: RailwayTransport, BusTransport, CargoTransport, PrivateVehicles;
  • SpaceTransport: SpacePassengerTransport, SpaceCargoTransport.

Каждый конечный класс наследуется только от указанной группы, а каждая группа — от Transport. После создания проверь несколько связей с помощью issubclass().