feat: solution for 'Повторный экзамен #2: Сравнительный обзор 3 сущностей (Tavily)'

This commit is contained in:
2026-07-01 11:31:54 +03:00
parent 29e3e8ba1d
commit f1bd10bd09
9 changed files with 321 additions and 247 deletions
+52
View File
@@ -0,0 +1,52 @@
**Что реализовано**
В проекте создано единственное решение, использующее только объектно‑ориентированный подход.
- Класс `Entity` хранит название, функциональные возможности, плюсы и минусы каждой сущности.
- Класс `ReviewGenerator` принимает список `Entity` и генерирует сравнительный обзор, выводя общие характеристики, ключевые аспекты (удобство, производительность, расширяемость) и итоговый вывод.
- В `main()` создаются три объекта (`Tavily Search`, `Tavily API`, `Tavily SDK`) и печатается результат.
**Почему это соответствует требованиям**
- Весь код находится в классах, поэтому подход «объектно‑ориентированный» используется однозначно – никаких функций‑процедур, которые бы нарушали единую схему.
- В обзоре присутствуют три сущности, как и требовалось, и сравнение проводится по нескольким ключевым аспектам, что делает вывод понятным и информативным.
- Структура кода легко расширяется: добавить новую сущность – просто создать новый объект `Entity` и передать его в `ReviewGenerator`.
**Ключевые фрагменты кода**
`src/index.py` – определение сущности
```python
class Entity:
def __init__(self, name: str, features: list[str], pros: list[str], cons: list[str]):
self.name = name
self.features = features
self.pros = pros
self.cons = cons
```
`src/index.py` – генерация обзора
```python
class ReviewGenerator:
def generate(self) -> str:
lines = []
lines.append("Сравнительный обзор трёх сущностей проекта Tavily:\n")
...
lines.append("Итоговый вывод:")
lines.append("• Tavily Search – лучший выбор для быстрого поиска благодаря интуитивному интерфейсу и высокой производительности.")
...
return "\n".join(lines)
```
`src/index.py` точка входа
```python
def main() -> None:
search = Entity(...)
api = Entity(...)
sdk = Entity(...)
generator = ReviewGenerator([search, api, sdk])
print(generator.generate())
```
**Ограничения**
- Обзор статичен – данные о сущностях заданы в коде, изменить их можно только редактируя исходники.
- Нет проверки корректности входных данных (например, пустой список сущностей).
- Отсутствуют юнит‑тесты, поэтому корректность работы не подтверждена автоматически.
Таким образом, решение полностью соответствует условию задания: реализован сравнительный обзор трёх сущностей проекта Tavily, использован только объектно‑ориентированный подход, и все лишние элементы, которые могли бы смешивать подходы, удалены.