1
resposta

criando classes, construtores e métodos

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)
        
    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
        
livro1 = Livro('Berserk', 'Kentaro Miyura', 1989)
livro2 = Livro('Vinland Saga', 'Makoto Yukimura', 2005)
livro3 = Livro("Naruto", "Masashi Kishimoto", 2002)
print(f"Antes de emprestar: Livro disponível? {livro3._disponivel}")


Livro.livros = [livro1, livro2, livro3] 
from livro import Livro

livro_biblioteca = Livro('Berserk', 'Kentaro Miyura', 1989)

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}")

ano_especifico = 2020
livros_disponiveis_ano = Livro.verificar_disponibilidade(ano_especifico)
print(f"Livros disponíveis em {ano_especifico}: {livros_disponiveis_ano}")
from livro import Livro  

livro_main1 = Livro('Berserk', 'Kentaro Miyura', 1989)
livro_main2 = Livro('Vinland Saga', 'Makoto Yukimura', 2005)

print(livro_main1)
print(livro_main2)
1 resposta

Oi, Cristofer! Tudo certo?

Gostei da sua solução para o desafio e também de como você organizou a classe Livro e utilizou um atributo de classe para armazenar a lista de livros. Um ponto interessante seria proteger o acesso direto ao atributo _disponivel, evitando sua modificação externa, mas fica apenas como criterio de melhoria.

Conte com o apoio do Fórum na sua jornada.