Olá Gustavo, tudo bem com você?
Peço desculpas pela demora no retorno.
No projeto da aula a implementação do método __str__
na superclasse (classe mãe) Programa
será necessária, pois, assim, definimos uma representação em string padrão para as classes que herdam dela. O que é útil caso o código passe por refatoração adicionando mais subclasses (classes filhas).
Por uma questão de didática, o instrutor optou por sobrescrever o método __str__
herdado da classe mãe, já que, cada classe necessita de uma representação em string customizada.
Quando declaramos o método __str__
na superclasse (classe mãe) esse método ficará disponível para todas as suas subclasses (classes filhas), até que esse método seja sobrescrito na classe filha. Assim, caso em algum momento uma classe filha não implemente o método __str__
, será feito o uso do método herdado da classe mãe. Como no exemplo abaixo:
class Programas:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._like = 0
def __str__(self):
return f'Nome: {self._nome} - Ano: {self.ano} - Likes: {self._like}'
class Filme(Programas):
def __init__(self, nome, ano, duracao):
super().__init__(nome, ano)
self.duracao = duracao
obj_vingadores = Filme('vingadores', 2018, 160)
print(obj_vingadores)
Resultado
Nome: Vingadores - Ano: 2018 - Likes: 0
Note que na classe filha Filme
não foi implementado o método __str__
, assim, ao realizarmos a impressão do objeto, é chamado o método __str__
da classe mãe.
Espero ter lhe ajudado. Em caso de dúvidas estou à disposição.
Não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!