JustCaptain kod-buduschego
llm/middle-9c3d46
Перейти к файлу
Код
kod-buduschego Python 2025-20264.1. Классы и объектыpracticestasks_easytask_2.py
anc update c70a58f 8 октября 2026 г.
task_2.py
"""
2. Книга

Класс Book.

Поля:

- название
- автор
- год

Метод:

- info() — печать информации

⸻

"""

book_1: dict = {"name": "Война и мир", "author": "Толстой", "create_at": "1867"}


def info_book(book: dict) -> None:
    print(
        f"Название: {book["name"]}\nАвтор: {book["author"]}\nГод: {book["create_at"]}"
    )


info_book(book=book_1)


class Book:
    def __init__(
        self, name: str, author: str | None = None, create_at: str | None = None
    ) -> None:
        self.name: str = name
        self.author: str | None = author
        self.create_at: str | None = create_at

    def info(self) -> str:
        if self.author:
            author = self.author
        else:
            author = "Не известно"

        if self.create_at:
            create_at = self.create_at
        else:
            create_at = "Не известно"
        message: str = f"Название: {self.name}\nАвтор: {author}\nГод: {create_at}"
        print(message)
        return message


class Libary:
    def __init__(self) -> None:
        self.books: list[Book] = []

    def add(self, book: Book) -> None:
        self.books.append(book)

    def create_file_info_books(self, path: str | None = None) -> None:
        data: str = ""
        for book in self.books:
            data += f"{book.info()}\n"
        if path is None:
            path = "info_book.txt"
        with open(file=path, mode="w", encoding="utf-8") as file:
            file.write(data)


book_2 = Book(name="Пиковая Дама", author="Пушник", create_at="1834")
book_2.info()

book_3 = Book(name="Как богатым в России?")
book_3.info()

libary = Libary()
libary.add(book_2)
libary.add(book_3)
libary.create_file_info_books()