Olá, Guilherme! Tudo bem?
Vou tentar te ajudar com isso, primeiro vou lhe mostrar um exemplo com uma forma de solução para o desafio, depois vou falar sobre o código que você compartilhou.
Vamos entender o que o método estático deve fazer: ele deve receber um ano como parâmetro e retornar uma lista dos livros disponíveis publicados nesse ano. Para isso, precisaremos de uma lista de todos os livros criados. Podemos fazer isso utilizando uma lista de classe.
Segue o exemplo de como você pode implementar isso:
class Livro:
# Lista de classe para armazenar todos os livros
todos_livros = []
def __init__(self, titulo, autor, ano_publicacao):
self.titulo = titulo
self.autor = autor
self.ano_publicacao = ano_publicacao
self.disponivel = True
# Adiciona o livro à lista de todos os livros
Livro.todos_livros.append(self)
def __str__(self):
return f"{self.titulo}, por {self.autor} ({self.ano_publicacao})"
def emprestar(self):
self.disponivel = False
@staticmethod
def verificar_disponibilidade(ano):
# Filtra os livros disponíveis publicados no ano fornecido
return [livro for livro in Livro.todos_livros if livro.ano_publicacao == ano and livro.disponivel]
# Exemplo de uso
livro1 = Livro("Livro A", "Autor A", 2021)
livro2 = Livro("Livro B", "Autor B", 2021)
livro3 = Livro("Livro C", "Autor C", 2022)
# Emprestando um livro
livro1.emprestar()
# Verificando disponibilidade de livros de 2021
livros_disponiveis_2021 = Livro.verificar_disponibilidade(2021)
for livro in livros_disponiveis_2021:
print(livro)
Neste exemplo, a classe Livro
possui uma lista de classe chamada todos_livros
que armazena todas as instâncias criadas. O método estático verificar_disponibilidade
filtra essa lista para retornar apenas os livros disponíveis publicados no ano fornecido.
Agora voltando para o código que você disponibilizou, quando realizei testes com ele recebi um erro na chamada libro1.alquiler_libro()
e isso está acontecendo porque você adicionou uma anotação @property
para o método alquiler_libro
, então você deve chamar ele como se fosse uma propriedade, logo você precisará apenas retirar as aspas da frente do método, ficando assim:
libro1.alquiler_libro
Espero ter ajudado e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.