2
respostas

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

Para não repetir cada pergunta, deixei dentro as marcações #[x], onde x representa o número do exercício e o código abaixo a resolução.

livraria.py

#[1]
class Livro:

    dados_livro = []
    def __init__(self, titulo, autor, ano_publicacao):
        self._titulo = titulo.title()
        self._autor = autor.title()
        self._ano_publicacao = ano_publicacao
        self._disponivel = True
        self.dados_livro.append(self)

    #[2]
    def __str__(self):
        return f'{self._titulo:<22}{self._autor:<20}{self._ano_publicacao:<8}{self._disponivel}'
 
    @classmethod
    def listar_livros(cls):
       print(f'{'TÍTULO':<25}{'AUTOR':<20}{'PUBLICAÇÃO':<15}{'STATUS'}')
       print('-'*70)
       for livro in cls.dados_livro:
          print(f'{livro._titulo:<25}{livro._autor:<20}{livro._ano_publicacao:<15}{livro.disponivel}')

    @property
    def disponivel(self):
        return 'Disponível' if self._disponivel else 'Emprestado'

    #[3]
    def emprestar(self):
        self._disponivel = not self._disponivel
    
    #[4]
    @staticmethod
    def verificar_disponibilidade(ano):
        livros_disponiveis = [
            livro for livro in Livro.dados_livro
            if livro._ano_publicacao == ano and livro.disponivel
        ]

        if livros_disponiveis:
            print(f'\nPUBLICADOS EM [{ano}] QUE ESTÃO DISPONÍVEIS')
            print('-' * 70)
            for livro in livros_disponiveis:
                print(f'{livro._titulo:<25}{livro._autor:<20}')
        else:
            print(f'\nNenhum livro publicado em [{ano}] está disponível.')

biblioteca.py

from modelos.livraria import Livro
livro1 = Livro('a coragem de liderar','Brené Brown',2019)
livro2 = Livro('a outra face','Sidney Sheldon',1973)
livro2 = Livro('Água Viva','Clarice Lispector' ,1973)
livro2 = Livro('Steve Jobs','Walter Isaacson',2022)

'''
#[2]
print(livro1)
print(livro2)
print(livro1)'''

Livro.listar_livros()
print('\n')
#[5]
livro1.emprestar()
Livro.listar_livros()

#[6]
Livro.verificar_disponibilidade(1973)
Livro.verificar_disponibilidade(1968)

main.py

from modelos.livraria import Livro

livro4 = Livro('O Alquimista','Paulo Coelho', 1988)
livro5 = Livro('Cem Anos de Solidão','Gabriel G. Márquez', 1982)

#[2]
print(livro4)
print(livro5)
2 respostas

Oi Shayne, tudo bem? 😊

Parabéns por compartilhar seu código do projeto! 👏

É ótimo ver você aplicando os conceitos de classes, construtores e métodos em Python. 💪

Seu código está bem estruturado e fácil de entender.

A classe Livro está organizada com os métodos __init__, __str__, listar_livros, emprestar e verificar_disponibilidade.

O uso de property para disponivel também é uma boa prática.

Continue praticando e explorando os recursos da Orientação a Objetos em Python! 🥳

🎓 Para saber mais:

Bons estudos e continue avançando! 📚

Ei Luis, Estou bem, espero que você também!

Bem grata pelo feedback, acredito que esses materiais irão acelerar meu aprendizado!