52 lines
3.8 KiB
Markdown
52 lines
3.8 KiB
Markdown
**Что реализовано**
|
||
В проекте создано единственное решение, использующее только объектно‑ориентированный подход.
|
||
- Класс `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, использован только объектно‑ориентированный подход, и все лишние элементы, которые могли бы смешивать подходы, удалены. |