40 lines
1.5 KiB
Python
40 lines
1.5 KiB
Python
# todo: Создайте иерархию классов для экспорта данных в разные форматы.
|
||
# Требования:
|
||
# Абстрактный базовый класс DataExporter:
|
||
#
|
||
# Методы:
|
||
# export(self, data) - абстрактный метод
|
||
# get_format_name(self) - возвращает название формата
|
||
# validate_data(self, data) - общий метод проверки данных (не пустые ли)
|
||
#
|
||
# Конкретные реализации:
|
||
# JSONExporter:
|
||
# Экспортирует данные в JSON-формат
|
||
# Добавляет поле "export_timestamp" с текущим временем
|
||
#
|
||
# CSVExporter:
|
||
# Экспортирует данные в CSV (если data - список словарей)
|
||
# Автоматически определяет заголовки из ключей первого элемента
|
||
#
|
||
# XMLExporter:
|
||
# Создает XML структуру с корневым элементом <report>
|
||
# HTMLExporter (дополнительно):
|
||
# Создает красивую HTML-таблицу с CSS-стилями
|
||
|
||
|
||
# Этот код должен работать после реализации:
|
||
sales_data = [
|
||
{"product": "Laptop", "price": 1000, "quantity": 2},
|
||
{"product": "Mouse", "price": 50, "quantity": 10}
|
||
]
|
||
|
||
exporters = [
|
||
JSONExporter(),
|
||
CSVExporter(),
|
||
XMLExporter()
|
||
]
|
||
|
||
for exporter in exporters:
|
||
print(f"Формат: {exporter.get_format_name()}")
|
||
exporter.export(sales_data)
|
||
print("---") |