Задача 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().
