2
respostas

[Dúvida] verificar_disponibilidade() não está retornando nada

No exercício 4, não estou conseguindo imprimir o resultado da função verificar_disponibilidade.

Ao instânciar um novo objeto, incluo ele em uma lista de livros:

class Livro:

livros = []

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)

Porém ao chamar o método, nada é retornado:

@staticmethod
def verificar_disponibilidade(ano):
    livros_disponiveis = [livro for livro in Livro.livros if livro._ano_publicacao == ano and livro.disponivel]
    return livros_disponiveis
    

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se eu altero a parte do 'return' para um 'print' da lista 'livros_disponíveis', ele me traz as posições dos itens:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Acho que entendi a resposta no exercício 7. O return não vai retornar nenhum valor para a impressão, sozinho.

Eu preciso atribuir o valor à uma variável e aí sim fazer a impressão.

Oi, Mateus! Tudo bem?

O problema está na forma como você está tentando visualizar o resultado do método verificar_disponibilidade. Como você mencionou, o return não imprime nada diretamente, ele apenas retorna o valor para quem chamou o método. Para visualizar o resultado, você precisa capturar o retorno do método e então imprimi-lo.

Aqui está como você pode ajustar o código para imprimir os livros disponíveis:

# Instanciando alguns livros
livro1 = Livro("Python para Iniciantes", "Autor A", 2020)
livro2 = Livro("Python Avançado", "Autor B", 2020)
livro3 = Livro("Machine Learning com Python", "Autor C", 2021)

# Verificando disponibilidade e imprimindo o resultado
livros_disponiveis_2020 = Livro.verificar_disponibilidade(2020)
print(livros_disponiveis_2020)

Neste exemplo, o método verificar_disponibilidade retorna uma lista de livros disponíveis no ano especificado. Ao chamar o método e armazenar o resultado em livros_disponiveis_2020, você pode então imprimir essa lista para ver os livros disponíveis.

Fico à disposição.