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

Temporadas não está aparecendo na Impressao

class Programa:
    def __init__(self, nome, ano):
        self._nome = nome.title()
        self.ano = ano
        self._likes = 0

    @property
    def likes(self):
        return self._likes

    def dar_like(self):
        self._likes += 1

    @property
    def nome(self):
        return self._nome

    @nome.setter
    def nome(self, novo_nome):
        self._nome = novo_nome.title()    
    def __str__(self):
       return f'{self._nome} - {self.ano} - {self._likes} Likes'

class Filme(Programa):
    def __init__(self, nome, ano, duracao):
        super().__init__(nome, ano)
        self.duracao = duracao
    def __str__(self):
        return f'{self._nome} - {self.ano} - {self.duracao} min - {self._likes} Likes'

class Serie(Programa):
    def __init__(self, nome, ano, temporadas):
        super().__init__(nome, ano)
        self.temporadas = temporadas
    def ___str__(self):
        return f'{self._nome} - {self.ano} - {self.temporadas} temporadas - {self._likes} Likes'

vingadores = Filme('vingadores - guerra infinita' , 2018, 160)  
vingadores.dar_like()

atlanta = Serie('atlanta', 2018, 2)
atlanta.dar_like()
atlanta.dar_like()

filmes_e_series = [vingadores, atlanta]

for Programa in filmes_e_series:
    print(Programa)

Ele está retornando assim....

        Vingadores - Guerra Infinita - 2018 - 160 min - 1 Likes
        Atlanta - 2018 - 2 Likes
2 respostas
solução!

Olá João, tudo bem com você?

Os valores da temporada não estão sendo exibidos devido a um erro de declaração do dunder método __str__. No código postado na classe Serie o dunder método está sendo declarado como ___str__ com 3 underscores antes do str, o correto é __str__ contendo 2 underscores de cada lado. Devido ele não ter sido declarado corretamente, o método usado está sendo o método __str__ da classe mãe (Programa). Por isso é impresso o resultado, mas não é apresentado erro.

Basta modificar o nome do método __str__ deixando-o como apresentado abaixo.

def __str__(self):
    return f'{self._nome} - {self.ano} - {self.temporadas} temporadas - {self._likes} Likes'

Após a modificação, salve o arquivo e execute-o.

Lembre-se que pode contar sempre com o fórum Alura, seja para tirar suas dúvidas e compartilhar o seu desenvolvimento.

Fico à disposição.

Abraços e bons estudos.

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

Muito Obrigado, Sabia que era em alguma coisa nas Séries que estava dando erro, mas não sabia a onde era.