1
resposta

[Projeto] Exercícios completos

Após um pouco de bateção de cabeça com o uso do verificar disponiblidade, consegui finalizar o código. Pesquisei sobre o decorator @staticmethod, já que não tinha sido ensinado na aula, mas acho interesse o uso de material que não foi usado na aula para instigar a pesquisa.

Segue abaixo meus códigos:

exercicios.py:

class Livro:
    Livros = []

    def __init__(self, titulo, autor, ano_publicado):
        self._titulo = titulo.title()
        self._autor = autor.title()
        self._ano_publicado = ano_publicado
        self._disponivel = True
        Livro.Livros.append(self)
            
    def emprestar(self):
        if self._disponivel:
            self._disponivel = False
            
    def __str__(self):
        return f'{self._titulo} | {self._autor} | {self._ano_publicado} | {'Disponível' if self._disponivel else 'Indisponível'}'
   
    @staticmethod
    def verificar_disponibilidade(ano):
        return [str(livro) for livro in Livro.Livros if livro._ano_publicado == ano]

biblioteca.py:

from exercicios import Livro

livro_dracula = Livro('Dracula', 'Bram Stoker', 1897)
livro_cthulhu = Livro('Chamado de Cthulhu', 'H.P. Lovecraft', 1928)
livro_retrato_Dorian = Livro('O Retrato de Dorian Gray', 'Oscar Wilde', 1890)


print(Livro.verificar_disponibilidade(1897)) ##O uso duplicado desse print é para teste se o emprestar funciona corretamente
livro_dracula.emprestar()
print(Livro.verificar_disponibilidade(1897))

main.py:

from exercicios import Livro

livro_mochileiro = Livro('O guia do Mochileiro das Galáxias', 'Douglas Adams', 1979)
livro_calculava = Livro('O homem que calculava', 'Malba Tahan', 1938)

livro_calculava.emprestar() ## Utilizei somente pra testar

print(livro_calculava)
print(livro_mochileiro)

No fim o bibilioteca.py só existe por conceito de exercícios, já que podemos juntar o código dele com do main, facilitando o acesso a todos os livros

1 resposta

Olá, Vinicius.

Tudo bem?

Parabéns pelo trabalho no código! Ficamos felizes em ver que você conseguiu finalizar o exercício e ainda explorou o decorator @staticmethod, que é uma excelente maneira de expandir seu conhecimento além do que foi ensinado em aula. A forma como você estruturou suas classes e métodos está muito boa, e sua abordagem para verificar a disponibilidade dos livros está bem pensada. Parabéns.

Continue assim, praticando e evoluindo.

Bons estudos!