1
resposta

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

ARQUIVO DESAFIO.PY

#Crie uma classe chamada Livro com um construtor que aceita os parâmetros titulo, autor e ano_publicacao. Inicie um atributo chamado disponivel como True por padrão.
#Na classe Livro, adicione um método especial str que retorna uma mensagem formatada com o título, autor e ano de publicação do livro. Crie duas instâncias da classe Livro e imprima essas instâncias.
class Livro:
    def __init__(self, titulo, autor, ano_publicacao):
        self._titulo = titulo
        self._autor = autor
        self._ano_publicacao = ano_publicacao
        self._ativo = True

    def __str__(self):
        return (f'Titulo: {self._titulo} | Autor: {self._autor} | Ano de publicação {self._ano_publicacao}')
    def emprestar(self):
        self._ativo = False

    @staticmethod
    def verificar_disponibilidade(ano, livros):
        return [livro for livro in livros if livro._ano_publicacao == ano and livro._ativo]
    
livro_thewitcher = Livro('The Witcher', 'Andrzej Sapkowski', 1992)
livro_meditacoes = Livro('Meditações', 'Marco Aurélio', 1558)
        
print(livro_meditacoes)
print(livro_thewitcher)


#Adicione um método de instância chamado emprestar à classe Livro que define o atributo disponivel como False. Crie uma instância da classe, chame o método emprestar e imprima se o livro está disponível ou não.
livro_meditacoes.emprestar()
print(f'O {livro_meditacoes._titulo} está diponível? {livro_meditacoes._ativo}')
#Adicione um método estático chamado verificar_disponibilidade à classe Livro que recebe um ano como parâmetro e retorna uma lista dos livros disponíveis publicados nesse ano.
livros = [livro_meditacoes, livro_thewitcher]
livros_ativo_1558 = Livro.verificar_disponibilidade(1558, livros)
print(f'Livros disponíveis publicados em 1558: {[livro._titulo for livro in livros_ativo_1558]}')

ARQUIVO BIBLIOTECA.PY

#Crie um arquivo chamado biblioteca.py e importe a classe Livro neste arquivo.
from desafio import Livro

#No arquivo biblioteca.py, empreste o livro chamando o método emprestar e imprima se o livro está disponível ou não após o empréstimo.
livro_thewitcher = Livro('The Witcher', 'Andrzej Sapkowski', 1992)
livro_thewitcher.emprestar()
print(f'O {livro_thewitcher.titutlo} está disponível? {livro_thewitcher.ativo}')
#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 = [livro_thewitcher]
livros_ativo_1992 = Livro.verificar_disponibilidade(1992,livros)
print(f'Livros disponíveis em 1992: {[livro._titulo for livro in livros_ativo_1992]}')

ARQUIVO MAIN.PY

#Crie um arquivo chamado main.py, importe a classe Livro e, no arquivo main.py, instancie dois objetos da classe Livro e exiba a mensagem formatada utilizando o método str.
from desafio import Livro

livro1 = Livro('Programador Autodidata', 'Cory Althoff', 2022)
livro2 = Livro('Entendendo Algoritmos', 'Aditya Y. Bhargava', 2017)

print(livro1)
print(livro2)
1 resposta

Oi, Gabriel! Tudo bem?

Excelente código, parabéns pelo projeto! Espero que esteja gostando do curso! Colocar em execução as atividades propostas pelo professor em aula é uma prática muito importante para internalizarmos o conteúdo. Caso tenha ficado alguma dúvida em relação ao curso ou atividade, sinta-se à vontade em comunicar, estou à disposição e ficarei super feliz em poder ajudar!

Um forte abraço e bons estudos!