Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

1
resposta

[Projeto] Meu código

#exercicios_classes2 .py
class Livro:
    livros = []
    def __init__(self, titulo = '', autor = '', ano_publicacao = 0):
        self._titulo = titulo.title()
        self._autor = autor.title()
        self._ano_publicacao = ano_publicacao
        self._disponivel = True 
        Livro.livros.append(self) 

    def __str__(self):
        status = 'Disponivel' if self._disponivel else 'Indisponivel'  

        return f'{self._titulo} | {self._autor} | {self._ano_publicacao} | {status}'
    
    def emprestar(self):
        self._disponivel = False

    def devolver(self):
        self._disponivel = True
    
    @staticmethod
    def verificar_disponibilidade(ano):
        livros_disponiveis = [livro for livro in Livro.livros if livro._ano_publicacao == ano and livro._disponivel]
        for livro in livros_disponiveis:
            print(livro)
        return livros_disponiveis     
    

    
livro1 = Livro('Homem de Ferro','Stan Lee',1900)
livro2 = Livro('Homem Aranha','Stan Lee',1910)




#biblioteca.py

from exercicios_classes2 import Livro

livro1 = Livro('Homem de Ferro','Stan Lee',1940)
livro2 = Livro('Homem Aranha','Stan Lee',1952)
livro3 = Livro('Star Wars','George Lucas',1940)
livro4 = Livro('Game of Thrones','George R. R. Martin',1952)

#main.py

from bliblioteca import livro1, livro2, livro3, livro4

from exercicios_classes2 import Livro


if __name__ == '__main__':
    print(livro1)
    print(livro2)
    livro1.emprestar()
    livro3.emprestar()

    print(livro3)

    Livro.verificar_disponibilidade(1952)

1 resposta

Oi, Pedro! Como vai?

Gostei da forma como você organizou as classes e separou os arquivos entre biblioteca.py, main.py e a classe Livro. O uso do método @staticmethod para verificar disponibilidade ficou muito interessante, além da utilização da lista Livro.livros para armazenar os objetos criados. Sua implementação dos métodos emprestar() e devolver() também deixou o projeto bem organizado.

Uma dica interessante para o futuro é utilizar o método __repr__ junto do __str__, facilitando a visualização dos objetos durante testes e depuração. Veja este exemplo:


class Livro:
    def __repr__(self):
        return f'Livro({self._titulo}, {self._autor})'

Esse código ajuda a exibir os objetos de forma mais clara ao imprimir listas ou coleções de livros.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!