2
respostas

Não encontro o erro

Após fazer a alteração de não usar dois underscore ( _ ) no código, o mesmo começou a apresentar um erro que nao encontro.

class Programa:
    def __init__(self, nome, ano, likes):
        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()

class Filme (Programa):
    def __init__(self, nome, ano, duracao):
        self._nome = nome.title()
        self.ano = ano
        self.duracao = duracao

class Serie(Programa):
    def __init__(self, nome, ano, temporada):
        self._nome = nome.title()
        self.ano = ano
        self.temporada = temporada

    @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()

vingadores = Filme('vingadores - guerra infinita', "2018", 160)
vingadores.dar_like()
print(f'Nome: {vingadores.nome} - ano:{vingadores.ano} - temporada:{vingadores.duracao} - likes:{vingadores.likes}')

atlanta = Serie('atlanta', 2018, 2)
atlanta.dar_like()
atlanta.dar_like()
print(f'Nome: {atlanta.nome} - ano:{atlanta.ano} - temporada:{atlanta.temporada} - likes:{atlanta.likes}')

2 respostas

Rafael, insira self._likes = 0

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

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

Salve Rafa, o Likes não é um atribudo variável de programa. Seu código está assim:

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

Altere para:

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

Abraços