Ola gente,
Começo me desculpando pela formulação 'nada Dev' da questão... :)
Então, pelo que entendi, Polimorfismo seria esse init da classe-mãe dentro do init da classe filha, que possibilita herdar os atributos da primeira.
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
class Filmes (Programa):
def __init__(self, nome, ano, duracao):
super(Filmes, self).__init__(nome, ano)
self.duracao = duracao
Em sequencia à essa explicação tinha o caso do loop for. Fiquei com dúvida sobre isso pois refiz o código sem que as classes fossem filhas de uma mesma classe mãe (mas sim classes criadas independentemente uma das outras) e o loop funcionou também.
class Filme:
def __init__(self, nome, ano, duracao):
self.nome = nome
self.ano = ano
self.duracao = duracao
self.likes = 0
def imprime(self):
print(f'Nome: {self.nome} - Ano: {self.ano} - {self.duracao} min - Likes: {self.likes}')
class Serie:
def __init__(self, nome, ano, temporada):
self.nome = nome
self.ano = ano
self.temporada = temporada
self.likes = 0
def imprime(self):
print(f'Nome: {self.nome} - Ano: {self.ano} - {self.temporada} Temporada - Likes: {self.likes}')
vingadores = Filme('vingadores', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)
filmes_e_series = [vingadores, atlanta]
for p in filmes_e_series:
p.imprime()
Suponho eu que funcionou pelo fato das duas classes filhas terem o método imprime(). Então o caso do for não é uma característica do Polimorfismo?