Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Parte 4

Nao entendo como formular a parte 4 do desafio, nao consigo que ano de publicaçao sirva de algo depois do if. Nao consegui avançar sem isso. (Disculpe se o codido está en español mas me resulta mais fácil estudar assim). https://github.com/Guilhwe/ActividadBiblioteca/commit/f2a63267334a98bff9c3800706cf153279b488de

2 respostas
solução!

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 ✓.

Muito obrigado pela ajuda agora esta mais claro e o codigo funciona devidadmente!!