Qual é o sentido de se implementar o método __str__
na classe mãe sendo que ela é a mais genérica e "sempre terá informações faltando"?
Não seria mais econômico e igualmente eficaz implementa-lo apenas nas classes filhas (mais específicas) visto que são elas que terão a informação completa que precisamos?
Tem algum truque Jedi escondido nessa implementação?
# -*- coding: UTF-8 -*-
# ../python3/oo2/Modelo.py
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
@property
def nome(self):
return self._nome
@property
def likes(self):
return self._likes
@nome.setter
def nome(self, novo_nome):
self._nome = novo_nome
def dar_like(self):
self._likes += 1
def __str__(self):
return f'{self._nome} de {self.ano} - {self._likes} likes'
# COM OU SEM ESSE MÉTODO OBTIVE O MESMO RESULTADO
class Filme(Programa):
def __init__(self, nome, ano, duracao):
super().__init__(nome, ano)
self.duracao = duracao
def __str__(self):
return f'{self.nome} de {self.ano} - {self.duracao} temporadas - {self.likes} likes'
class Serie(Programa):
def __init__(self, nome, ano, temporadas):
super().__init__(nome, ano)
self.temporadas = temporadas
def __str__(self):
return f'{self.nome} de {self.ano} - {self.temporadas} temporadas - {self.likes} likes'
vingadores = Filme('vingadores - guerra infinita', 2018, 160)
vingadores.dar_like()
vingadores.dar_like()
vingadores.dar_like()
atlanta = Serie('atlanta', 2018, 2)
atlanta.dar_like()
atlanta.dar_like()
playlist = [vingadores, atlanta]
for programa in playlist:
print(programa)