1
resposta

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



%%writefile biblioteca.py
#5) O arquivo biblioteca.py agora contém aa definição de classe Livro que foi transferida.
class Livro:
   livros = [] #Exercício 4: Criação de um atributo de classe
   def __init__(self, titulo, autor, ano_publicacao):
      self.titulo = titulo
      self.autor  = autor
      self.ano_publicacao = ano_publicacao
      self.disponivel = True
      Livro.livros.append(self)
#2)----------
   def __str__(self):
      return f' {self.titulo}\n - autor: {self.autor.ljust(25)} - ano: {self.ano_publicacao.ljust(25)}\n'
#3)----------

   def emprestar(self):
      if self.disponivel:
         self.disponivel = False
         print(f'Livro "{self.titulo}" foi emprestado.')
      else:
         print(f'Livro "{self.titulo}" não está disponível para empréstimo.')

#4)-----------
   @staticmethod
   def verificar_disponibilidade(ano_publicacao):
      # Usando compreensão de lista para filtrar os livros
      livros_disponiveis_no_ano = [
          livro for livro in Livro.livros
          if livro.ano_publicacao == ano_publicacao and livro.disponivel
      ]
      return livros_disponiveis_no_ano

if __name__ == '__main__':
    livro1 = Livro('Python para Iniciantes', 'Guido van Rossum', '2023')
    livro2 = Livro('A Arte da programação','Ada Lovelace', '1990')
    livro3 = Livro('Deixe seu código limpo e brilhante', 'José Yoshiriro', '2025')

#6)------------

    livro1.emprestar()
    livro2.disponivel = False
    livro2.emprestar()
    print()
#7)------------

    verificar_disponibilidade = Livro.verificar_disponibilidade('2025')
    print("Livros disponíveis | ano 2025:")
    for livro in verificar_disponibilidade:
        print(livro)
%%writefile main.py
from biblioteca import Livro

livro1 = Livro('Python para Iniciantes', 'Guido van Rossum', '2023')
livro3 = Livro('Deixe seu código limpo e brilhante', 'José Yoshiriro', '2025')

print(livro1)
print(livro3)
/content# python3 biblioteca.py
Livro "Python para Iniciantes" foi emprestado.
Livro "A Arte da programação" não está disponível para empréstimo.

Livros disponíveis | ano 2025:
 Deixe seu código limpo e brilhante
 - autor: José Yoshiriro            - ano: 2025  
/content# python3 main.py 
 Python para Iniciantes
 - autor: Guido van Rossum          - ano: 2023                     

 Deixe seu código limpo e brilhante
 - autor: José Yoshiriro            - ano: 2025
1 resposta

Oi, Carlos! Como vai?

Agradeço por compartilhar.

Gostei bastante da forma como você organizou a classe Livro, principalmente o uso do atributo de classe livros junto com a compreensão de lista no método verificar_disponibilidade. Isso mostra um bom entendimento de orientação a objetos e também de como trabalhar com coleções em Python.

Uma dica interessante para o futuro é usar o método __repr__ pra representar melhor os objetos durante depuração.


class Livro:
    def __repr__(self):
        return f"Livro(titulo={self.titulo}, autor={self.autor}, ano={self.ano_publicacao})"

Esse código define como o objeto será exibido de forma mais detalhada no console, ajudando a entender melhor os dados durante testes.

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