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

Dúvidas sobre a herança com super()

Fala galera, fiquei com uma pequena dúvida em relação a herança usando super().

Observando o caso abaixo:

class Program():
    def __init__(self, name, year):
        self.__name = name.title()
        self.year = year
        self.__likes = 0

class Movie(Program):
    def __init__(self, name, year, duration):
        super().__init__(name, year)
        self.duration = duration

av = ('vingadores - guerra infinita', 2018, 160)

Minha suposição:

O init da classe Movie(Program) utiliza o super() para acessar o init da classe Mãe Program() passando os argumentos à função. Com isso, seria criado um objeto (program) com os atributos name e year e outro objeto (movie) com o atributo duration.

    program --> Vingadores - Guerra Infinita, 2018
    movie --> 160
    av  = program + movie

Como funciona de fato esse relacionamento? Quando utilizamos o super() nesse caso, são criados dois objetos (program e movie) que se relacionam por baixo dos panos?

1 resposta
solução!

Fisicamente, ou "por baixo dos panos", o interpretador cria apenas um objeto Filme, com os atributos nome, ano, duracao, likes e nome. A superclasse é apenas uma abstração.

Olha só, são apenas dois objetos, um objeto Serie cujo nome é atlanta, e um objeto Filme, cujo nome é vingadores: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Se você criar uma outra classe filha, como por exemplo Documentario sendo filha de filme, ele vai criar um objeto Documentario, com todos os atributos e métodos das 3 classes:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade