Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] [Dúvida] [Hora da prática: criando classes, construtores e métodos] - Exercício 4

Olá, tudo bem? Não entendi a resolução do exercício de número 04. Não estou conseguindo "puxar" os argumentos do "init" para conseguir ter equivalência nas variáveis "livro.ano_publicacao", "livro.disponivel" e "livro.titulo". O que posso fazer para solucionar essa questão?

class Livro: livros = [] 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)

def __str__(self):
    return f'{self._titulo} | {self._autor} | {self._ano_publicacao}'

def emprestar(self):
    self.disponivel = not self.disponivel
    return self.disponivel

@staticmethod
def verificar_disponibilidade(ano):
    for livro in Livro.livros:
        if livro.ano_publicacao == ano and livro.disponivel:
            print(f'O livro {livro.titulo} está disponível')
        else:
            print('Indisponível')
2 respostas
solução!

Olá, Vinícius!

No seu código, você está tentando acessar livro.ano_publicacao e livro.titulo, mas os atributos foram definidos como self._ano_publicacao e self._titulo no método __init__.

Para resolver esse problema, você pode alterar o método verificar_disponibilidade para acessar os atributos corretos. Aqui está uma sugestão de como você pode ajustar o código:

class Livro:
    livros = []
    
    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)

    def __str__(self):
        return f'{self._titulo} | {self._autor} | {self._ano_publicacao}'

    def emprestar(self):
        self.disponivel = not self.disponivel
        return self.disponivel

    @staticmethod
    def verificar_disponibilidade(ano):
        for livro in Livro.livros:
            if livro._ano_publicacao == ano and livro.disponivel:
                print(f'O livro {livro._titulo} está disponível')
            else:
                print('Indisponível')

Note que agora estou usando livro._ano_publicacao e livro._titulo no método verificar_disponibilidade.

Bons estudos!

Obrigado!