Olá Vitor! Tudo bem?
Pelo que você descreveu, parece que o erro está relacionado à forma como o método verificar_disponibilidade
está sendo implementado e utilizado. Vamos dar uma olhada no seu código e ver o que pode estar causando o problema.
No seu método verificar_disponibilidade
, a lógica de filtragem dos livros parece estar incorreta. Além disso, o método precisa ser um método estático, o que significa que ele não deve depender de uma instância específica da classe. Vou sugerir algumas correções:
Defina o método como estático: Para isso, você deve usar o decorador @staticmethod
antes do método. Isso é importante porque métodos estáticos não recebem o parâmetro self
por padrão.
Corrija a lógica de filtragem: Parece que a lógica para filtrar os livros disponíveis está um pouco confusa. Você deve iterar sobre uma lista de instâncias da classe Livro
e verificar se o ano de publicação e a disponibilidade coincidem.
Aqui está um exemplo de como você pode ajustar o método:
class Livro:
def __init__(self, titulo, autor, ano_publicacao):
self.titulo = titulo
self.autor = autor
self.ano_publicacao = ano_publicacao
self.disponivel = True
@staticmethod
def verificar_disponibilidade(livros, ano):
livros_disponiveis = [livro for livro in livros if livro.ano_publicacao == ano and livro.disponivel]
return livros_disponiveis
E no seu arquivo biblioteca.py
, você deve passar a lista de livros para o método:
# Supondo que você tenha uma lista de instâncias de Livro
livros = [
Livro("Livro 1", "Autor 1", 1951),
Livro("Livro 2", "Autor 2", 1951),
Livro("Livro 3", "Autor 3", 1952)
]
# Emprestando um livro para testar
livros[0].emprestar()
ano = 1951
livros_disponiveis = Livro.verificar_disponibilidade(livros, ano)
print(f"Os livros disponíveis do ano {ano} são: {livros_disponiveis}")
Certifique-se de que você está passando a lista de instâncias de Livro
como primeiro argumento para o método verificar_disponibilidade
. Isso deve resolver o problema que você está enfrentando.
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.