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

AttributeError: 'Serie' object has no attribute 'likes'

class Filme:
    def __init__(self, nome, ano, duracao):
        self.__nome = nome.title()
        self.ano = ano
        self.duracao = duracao
        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()

class Serie:
    def __init__(self, nome, ano, temporadas):
        self.__nome = nome.title()
        self.ano = ano
        self.temporadas = temporadas
        self.__likes = 0

    @property
    def like(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()

vingadores = Filme("vingadores - guerra infinita", 2018, 160)
vingadores.dar_like()
print("nome: {}, ano: {}, duração: {}, likes: {}".format(vingadores.nome, vingadores.ano,
                                                         vingadores.duracao, vingadores.likes))

atlanta = Serie("atlanta", 2018, 2)
atlanta.dar_like()
atlanta.dar_like()
print("nome: {}, ano: {}, temporadas: {}, likes: {}".format(atlanta.nome, atlanta.ano,
                                                            atlanta.temporadas, atlanta.likes))

Não entendi esse erro. É pra definir "likes" como um atributo na classe Serie? Não me parece ser o caso, já que não precisei fazer isso no Filme e rodou direitinho. Mas por que na Serie não está funcionando se o código é praticamente o mesmo?

3 respostas
solução!

Olá Anna, tudo bem?

Veja o trecho abaixo:

class Serie:
    def __init__(self, nome, ano, temporadas):
        self.__nome = nome.title()
        self.ano = ano
        self.temporadas = temporadas
        self.__likes = 0

    @property
    def like(self):                                   --- o correto aqui é "likes" e não "like" -----
        return self.__likes

Testa aí e nos diga o resultado.

Oi, André.

Adicionei um s nesse like e o código rodou diretinnho.

Eu li e reli esse código umas três vezes e não consegui encontrar esse errinho, cê acredita? Mas enfim, muito obrigada!

Isso é absolutamente normal Anna, a gente fica tão fissurado em querer encontrar o erro que não enxergamos o óbvio às vezes rsrsrs. O ideal é relaxar e deixar pra ver no dia seguinte ou pedir pra alguém dar uma olhada pra você, é assim mesmo.

Bons estudos!