class Livro:
# Lista de classe para armazenar todas as instâncias e facilitar a busca
livros = []
# 1. Construtor
def __init__(self, titulo, autor, ano_publicacao):
self.titulo = titulo
self.autor = autor
self.ano_publicacao = ano_publicacao
self.disponivel = True
Livro.livros.append(self)
# 2. Método especial __str__
def __str__(self):
status = 'Disponível' if self.disponivel else 'Emprestado'
return f"Livro: {self.titulo} | Autor: {self.autor} | Ano: {self.ano_publicacao} | Status: {status}"
# 3. Método de instância emprestar
def emprestar(self):
self.disponivel = False
# 4. Método estático para verificar disponibilidade por ano
@staticmethod
def verificar_disponibilidade(ano):
# Filtra na lista de classe os livros do ano X que estão disponíveis
livros_filtrados = [livro for livro in Livro.livros if livro.ano_publicacao == ano and livro.disponivel]
return livros_filtrados
# 5. Importando a classe
from livro import Livro
Criando instâncias para teste
livro_biblio1 = Livro('Dom Casmurro', 'Machado de Assis', 1899)
livro_biblio2 = Livro('O Alquimista', 'Paulo Coelho', 1988)
livro_biblio3 = Livro('1984', 'George Orwell', 1949)
6. Emprestando um livro e verificando status
print(f"Antes do empréstimo: {livro_biblio1}")
livro_biblio1.emprestar()
print(f"Após o empréstimo: {livro_biblio1}")
7. Utilizando o método estático
print("\n--- Verificando livros disponíveis de 1988 ---")
disponiveis_1988 = Livro.verificar_disponibilidade(1988)
for livro in disponiveis_1988:
print(livro)
# 8. Importando e instanciando no main
from livro import Livro
livro_main1 = Livro('Python Fluente', 'Luciano Ramalho', 2015)
livro_main2 = Livro('Código Limpo', 'Robert C. Martin', 2008)
print("\n--- Exibição via main.py ---")
print(livro_main1)
print(livro_main2)