1
resposta

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

"""
Classe representando um livro.
"""
class Livro:
    # 1. Inicie um atributo chamado disponivel como True por padrão.
    def __init__(self, titulo, autor, ano_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.ano_publicacao = ano_publicacao
        self.disponivel = True  
    
    # 2. Retorna uma mensagem formatada com o título, autor e ano de publicação do livro.
    def __str__(self):
        return f'{self.titulo} por {self.autor}, publicado em {self.ano_publicacao}'  

    # 3. Define o atributo disponivel como False para indicar que o livro está indisponível.
    def emprestar(self):
        self.disponivel = False  

    # 4. Retorna uma lista dos livros disponíveis publicados nesse ano.
    @staticmethod
    def verificar_disponibilidade(livros, ano):
        return [livro for livro in livros if livro.ano_publicacao == ano and livro.disponivel]  

class Biblioteca:
    def emprestar_livro(self, livro):
        livro.emprestar()
        print(f'O livro "{livro.titulo}" está disponível após o empréstimo: {livro.disponivel}')


class Main:
    def run(self):
        # 2. Crie duas instâncias da classe Livro e imprima essas instâncias.
        livro1 = Livro("Dom Quixote", "Miguel de Cervantes", 1605)
        livro2 = Livro("A Arte da Guerra", "Sun Tzu", "5th century BC")

        print(livro1)
        print(livro2)

        # 3. Crie uma instância da classe, chame o método emprestar e imprima se o livro está disponível ou não após o empréstimo.
        livro3 = Livro("1984", "George Orwell", 1949)
        biblioteca = Biblioteca()
        biblioteca.emprestar_livro(livro3)

        # 7. No arquivo biblioteca.py, utilize o método estático verificar_disponibilidade para obter a lista de livros disponíveis publicados em um ano específico.
        livros = [livro1, livro2, livro3]
        livros_disponiveis_1605 = Livro.verificar_disponibilidade(livros, 1605)
        print(f'Livros disponíveis publicados em 1605: {[livro.titulo for livro in livros_disponiveis_1605]}')


if __name__ == "__main__":
    main = Main()
    main.run()
1 resposta

Oi, Anderson! Tudo bem?

Ótimo código, parabéns! Obrigada por compartilhá-lo com o fórum do curso, tenho certeza que ajudará muitos colegas que possam estar sentindo dúvidas! Caso tenha ficado alguma dúvida em relação a algum conteúdo do curso ou atividade, fique a vontade para expor, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!