Skip to content

added Library class that adds and removes items#21

Open
skarakash wants to merge 1 commit intorusalforever:masterfrom
skarakash:homework_lection2_Sergey_Karakash
Open

added Library class that adds and removes items#21
skarakash wants to merge 1 commit intorusalforever:masterfrom
skarakash:homework_lection2_Sergey_Karakash

Conversation

@skarakash
Copy link
Copy Markdown

📚 Library Management System

Цей проєкт реалізує систему управління бібліотекою на Python з використанням:

  • Ітераторів та генераторів
  • Декораторів
  • Контекстних менеджерів
  • Абстракції, спадкування та поліморфізму (ООП)
  • Валідації через Pydantic
  • Логування
  • Type Annotations

📦 Структура проєкту

learn_python_project/
├── models.py # Моделі BookModel, MagazineModel, абстрактна базова модель
├── library.py # Клас Library з усією логікою
├── main.py # Приклад виконання задачі
├── data/
│ └── items.json # Файл збереження бібліотеки
└── README.md # Цей файл


🔧 Використані технології

  • Python 3.12+
  • Pydantic для валідації
  • JSON для зберігання даних
  • Стандартні бібліотеки: typing, json, os, logging, contextlib, abc

🧱 Основні компоненти

📘 Клас BookModel

  • Реалізований за допомогою pydantic.BaseModel
  • Має поля: title, author, year, type
  • Є абстрактним базовим класом з методом get_publication_info()

📰 Клас MagazineModel

  • Наслідується від BookModel
  • Додає поля issue та month
  • Реалізує метод get_publication_info()

📚 Клас Library

  • Зберігає список книг та журналів
  • Підтримує:
    • Ітерацію (__iter__)
    • Генератор по автору (get_books_by_author)
    • Логування додавання та перевірку наявності книг (декоратори)
    • Контекстний менеджер для збереження/завантаження (file_manager)
    • Виведення списку книг/журналів/групування по автору

🧪 Демонстрація функціональності

✅ Під час виконання main.py відбувається:

  1. Створення бібліотеки
  2. Створення книг і журналів
  3. Додавання об'єктів у бібліотеку
  4. Виведення всіх книг
  5. Виведення книг по автору
  6. Збереження бібліотеки у файл data/items.json
  7. Видалення книги
  8. Виведення оновленого списку книг
  9. Завантаження з файлу
  10. Додавання унікальних книг із файлу
  11. Фінальне виведення бібліотеки

🧠 Приклад запуску

python main.py

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant