Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Projeto] Hora da prática: criando classes, construtores e métodos

Boa noite, segue resolucao do código

Arquivo: livro.py

class Livro:
    livros = []  # Lista para armazenar todas as instâncias de Livro

    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)  # Adiciona cada instância à lista de livros

    def __str__(self):
        return f"Livro: {self.titulo} | Autor: {self.autor} | Ano de Publicação: {self.ano_publicacao}"

    def emprestar(self):
        self.disponivel = False

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

Arquivo: biblioteca.py

from livro import Livro

# Criação de uma instância e teste do método emprestar
livro_biblioteca = Livro("Python in Practice", "Emily Coder", 2021)
print(f"Antes de emprestar (biblioteca): Livro disponível? {livro_biblioteca.disponivel}")
livro_biblioteca.emprestar()
print(f"Depois de emprestar (biblioteca): Livro disponível? {livro_biblioteca.disponivel}")

# Utilizando o método estático verificar_disponibilidade para obter a lista de livros disponíveis publicados em um ano específico
ano_especifico = 2020
livros_disponiveis_ano = Livro.verificar_disponibilidade(ano_especifico)
print(f"Livros disponíveis em {ano_especifico}:")
for livro in livros_disponiveis_ano:
    print(livro)

Arquivo: main.py

from livro import Livro

# Instanciação de dois objetos da classe Livro
livro_main1 = Livro("Python para Iniciantes", "Carlos Coder", 2021)
livro_main2 = Livro("Web Development Essentials", "Laura Developer", 2023)

# Exibição da mensagem formatada utilizando o método __str__
print(livro_main1)
print(livro_main2)
1 resposta
solução!

Olá, João!

Pelo que você compartilhou, parece que você seguiu bem as instruções da atividade. Vamos dar uma olhada nos principais pontos para garantir que tudo está em ordem:

  1. Classe Livro e Construtor: Você criou a classe Livro com o construtor que aceita titulo, autor e ano_publicacao, e inicializa disponivel como True. Isso está de acordo com o que foi pedido.

  2. Método Especial __str__: O método __str__ está implementado corretamente e retorna uma mensagem formatada com as informações do livro. Você também criou instâncias e imprimiu essas instâncias, o que está correto.

  3. Método emprestar: O método emprestar altera o estado de disponivel para False, e você testou isso no arquivo biblioteca.py, imprimindo o estado antes e depois do empréstimo. Isso parece estar funcionando como esperado.

  4. Método Estático verificar_disponibilidade: Você implementou o método estático que verifica a disponibilidade dos livros por ano. No seu exemplo, você está verificando para o ano de 2020, o que está correto. Apenas certifique-se de que existam livros desse ano para o teste ser mais significativo.

  5. Importações e Arquivos: Você importou a classe Livro nos arquivos biblioteca.py e main.py, e realizou as operações solicitadas, como emprestar um livro e exibir as mensagens formatadas.

Tudo parece estar em ordem com o seu código! Se você encontrar algum comportamento inesperado, verifique se os livros que está testando realmente correspondem aos critérios que você está usando (como o ano de publicação).

Bons estudos!