1
resposta

Dar Like

Pessoal bom dia, Amigos meu codigo nao funciona, e nao encontrei o erro. alguem poderria me ajudar?


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

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


class Serie(Programa):
    #nao coloco o likes como atributo aqui porque inicia com zero
    def __init__(self, nome, ano, temporadas):
        self._nome = nome.title()
        self.ano = ano
        self.temporadas = temporadas
        self._likes = 0



vingadores= Filme('vingadores- guerra infinita', 1978,2)
vingadores.dar_like()
print("O seriado {} foi passado no ano de {}, com uma duração de {} horas, e {} likes". format(vingadores.nome, vingadores.ano, vingadores.duracao, vingadores.likes))


atlanta = Serie('atlanta ', 2018, 2)
atlanta.dar_like()
atlanta.dar_like()
print("O seriado {} foi passado no ano de {}, com uma duração de {} horas, e {} likes".format(atlanta.nome, atlanta.ano, atlanta.temporadas, atlanta.likes))
1 resposta

Na classe Programa, seus @properties e métodos estão dentro de função init. Outra coisa, a classe Filme e Serie estão herdando as propriedades e métodos da class Programa, usando o super() você não precisa ficar copiando código

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


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


class Serie(Programa):
    # nao coloco o likes como atributo aqui porque inicia com zero
    def __init__(self, nome, ano, temporadas):
        super().__init__(nome, ano)
        self.temporadas = temporadas


vingadores = Filme('vingadores- guerra infinita', 1978, 2)
vingadores.dar_like()
print("O seriado {} foi passado no ano de {}, com uma duração de {} horas, e {} likes".format(
    vingadores.nome, vingadores.ano, vingadores.duracao, vingadores.likes))

atlanta = Serie('atlanta ', 2018, 2)
atlanta.dar_like()
atlanta.dar_like()
print("O seriado {} foi passado no ano de {}, com uma duração de {} horas, e {} likes".format(
    atlanta.nome, atlanta.ano, atlanta.temporadas, atlanta.likes))

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software