Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Super

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

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

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

    @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, duracao)
        self.duracao = duracao

class Serie (Programa):
    def __init__(self, nome, ano, temporadas):
        super().__init__(nome, ano, temporadas)
        self.temporadas = temporadas

vingadores = Filme("vingadores", 2018, 2.5)

greys = Serie ("greys", 2016, 70)

vingadores.dar_like()
vingadores.dar_like()

print("Título: {} Lançamento: {} Duração: {} horas Likes: {}".format(vingadores.nome, vingadores.ano, vingadores.duracao, vingadores.likes))
print("Título: {} Lançamento: {} Duração: {} horas Likes: {}".format(greys.nome, greys.ano, greys.duracao, greys.likes))

Olá, boa noite!
Quando eu acrescento o "super" e vou rodar o código, ele fica com erro se eu não adiciono "duração" no init de filmes e a mesma coisa para "temporadas" na série. Adicionando roda normal.. É comum ou fiz algo errado? :)
1 resposta
solução!

Oiii Letícia, como você está?

Quando você acrescenta o super ele se refere a classe mãe, portanto, os atributos passados a ele pegarão como base o __init__ da classe mãe, nesse caso, a classe Programa.

Se o __init__ da classe Programa possuísse apenas nome, o único requisito que precisaríamos passar no super seria o nome. Porém, como o __init__ da classe mãe possui nome, ano e duração necessariamente precisamos passar estes três parâmetros quando formos invocar o super.

No código em específico dessa atividade que você abriu tópico, no __init__ da classe Programa possuímos apenas nome e ano, por isso no super não passamos a duração.

Qualquer dúvida estou por aqui, tá bom?

Abraços e bons estudos!

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