Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Problemas com importação

1 - 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.

class Livro:
    def __init__(self, titulo, autor, ano_de_publicacao):
        self.titulo = titulo
        self.autor = autor
        self.ano_de_publicacao = ano_de_publicacao
        self.disponivel = True

2 - 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_de_publicacao):
        self._titulo = titulo
        self._autor = autor
        self._ano_de_publicacao = ano_de_publicacao
        self.disponivel = True

    def __str__(self):
        return f'{self._titulo} | {self._autor} | {self._ano_de_publicacao}'
    
livro_contos = Livro('Contos Inacabados', 'J.R.R. Tolkien', 1954)
livro_desentendimento = Livro('O Desentendimento', 'Jacques Ranciere', 1940)

print(livro_contos)
print(livro_desentendimento)

3 - 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.

@property
    def disponibilidade(self):
        return '☑' if self._disponivel else '☐'
    
    def alternar_disponibilidade(self):
       self._disponivel = not self._disponivel 
    
livro_contos = Livro('Contos Inacabados', 'J.R.R. Tolkien', 1954)
livro_desentendimento = Livro('O Desentendimento', 'Jacques Ranciere', 1940)
livro_desentendimento.alternar_disponibilidade()

print(livro_desentendimento._disponivel)

4 - 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.

class Livro:
    def __init__(self, titulo, autor, ano_de_publicacao):
        self._titulo = titulo
        self._autor = autor
        self._ano_de_publicacao = ano_de_publicacao
        self._disponivel = True
        lista_de_livros = []
        Livro.lista_de_livros.append(self)

    def __str__(self):
        return f'{self._titulo} | {self._autor} | {self._ano_de_publicacao}'
    
    @property
    def disponibilidade(self):
        return '☑' if self._disponivel else '☐'
    
    def alternar_disponibilidade(self):
       self._disponivel = not self._disponivel

    def verificar_disponibilidade(self, ano):
        livros_disponiveis = [livro for livro in Livro.lista_de_livros if livro.ano_de_publicacao == ano and livro._disponivel]
        return livros_disponiveis

    
livro_contos = Livro('Contos Inacabados', 'J.R.R. Tolkien', 1954)
livro_desentendimento = Livro('O Desentendimento', 'Jacques Ranciere', 1940)
livro_desentendimento.alternar_disponibilidade()
livro_desentendimento.verificar_disponibilidade

print(livro_desentendimento._disponivel)

5 - Crie um arquivo chamado biblioteca.py e importe a classe Livro neste arquivo.

Porém aparece esse erro: No module named 'modelos' Mas o diretório onde está localizada a biblioteca e os livros.

from modelos.livros import Livro

6 - 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.

from modelos.livros import Livro


livro_contos.alternar_ddisponibilidade()
print(livro_contos.disponibilidade)
1 resposta
solução!

Olá Felipe! Tudo bem?

Primeiro, certifique-se de que a estrutura do seu projeto está correta. Algo como:

seu_projeto/
│
├── modelos/
│   ├── __init__.py
│   └── livros.py
│
└── biblioteca.py
  1. Crie o arquivo livros.py dentro da pasta modelos e defina a classe Livro lá:

    # modelos/livros.py
    class Livro:
        def __init__(self, titulo, autor, ano_de_publicacao):
            self.titulo = titulo
            self.autor = autor
            self.ano_de_publicacao = ano_de_publicacao
            self.disponivel = True
    
        def __str__(self):
            return f'{self.titulo} | {self.autor} | {self.ano_de_publicacao}'
    
        def emprestar(self):
            self.disponivel = False
    
        @staticmethod
        def verificar_disponibilidade(ano, lista_de_livros):
            return [livro for livro in lista_de_livros if livro.ano_de_publicacao == ano and livro.disponivel]
    
  2. Crie o arquivo biblioteca.py no diretório principal do seu projeto e importe a classe Livro:

    # biblioteca.py
    from modelos.livros import Livro
    
    # Crie instâncias de livros
    livro_contos = Livro('Contos Inacabados', 'J.R.R. Tolkien', 1954)
    livro_desentendimento = Livro('O Desentendimento', 'Jacques Ranciere', 1940)
    
    # Empreste o livro
    livro_contos.emprestar()
    
    # Verifique a disponibilidade
    print(f'O livro "{livro_contos.titulo}" está disponível? {livro_contos.disponivel}')
    

Alguns pontos importantes:

  • Certifique-se de que o arquivo __init__.py está presente na pasta modelos. Este arquivo pode estar vazio, mas é necessário para que o Python reconheça modelos como um pacote.

  • Verifique se a estrutura de diretórios está correta e se você está executando o script biblioteca.py a partir do diretório principal do projeto.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.