class Livro:
total_livros = []
def __init__(self, titulo, autor, ano):
self.titulo = titulo
self.autor = autor
self.ano = ano
self.disponivel = True
Livro.total_livros.append(self)
def __str__(self):
return f"{self.titulo} por {self.autor} ano de publicação {self.ano}"
@property
def emprestar(self):
if self.disponivel:
self.disponivel = False
return "Livro emprestado com sucesso!"
else:
return "Livro não está disponível para empréstimo."
@property
def devolver(self):
if not self.disponivel:
self.disponivel = True
return "Livro devolvido com sucesso!"
else:
return "Livro já está disponível."
@classmethod
def verificar_disponibilidade(cls, ano):
livros_disponiveis = []
for livro in cls.total_livros:
if livro.disponivel and livro.ano == ano:
livros_disponiveis.append(livro)
for livro in livros_disponiveis:
print(f"Título: {livro.titulo}, Autor: {livro.autor}, Ano: {livro.ano}")
livro1 = Livro("Dom Casmurro", "Machado de Assis", 1899)
livro2 = Livro("O Alquimista", "Paulo Coelho", 1988)
livro3 = Livro("Gabriela Cravo e Canela", "Jorge Amado", 1988)
print(livro1)
print(livro1.emprestar)
print(livro1.disponivel)
print(Livro.verificar_disponibilidade(1988))
Primeira dúvida: Para não ter um retorno de espaço de memoria usei o print. Porém o retorno do print é um None. Isso estaria errado?
Segunda dúvida É pedido para que o verificar_disponibilidade seja um metodo estatico. Colocando ele como metodo da classe estaria errado?