Primeiramente, meu codigo deu AttributeError, assim como ja vi aqui no forum. Vou colocar meu codigo inteiro aqui:
class Programa:
def __init__(self, nome, ano):
self._nome = nome
self._ano = ano
self._likes = 0
@property
def nome(self):
return self._nome.title()
@property
def likes(self):
return self._likes
@property
def dar_like(self):
self._likes += 1
class Filme(Programa):
def __init__(self, nome, ano, duracao):
super().__init__(nome, ano)
self._duracao = duracao
@property
def info(self):
print(f'{self._nome} \nAno: {self._ano}\nDuracao: {self._duracao} minutos\nLikes: {self.likes}')
class Serie(Programa):
def __init__(self, nome, ano, temporadas):
super().__init__(nome, ano)
self._temporadas = temporadas
@property
def info(self):
print(f'{self._nome} - {self._temporadas} temporada(s)\nAno: {self._ano}\nLikes: {self.likes}')
Meu primeiro erro foi quando estava testando a funcionalidade info(), mas antes, nao entendi por que ocorreu AttributeError quando fui tentar fazer o for in
et = Filme('ET', 1999, 145)
et.dar_like
mr = Serie('Mr. Robot', 2018, 2)
filmes_e_series = [et, mr]
for programa in filmes_e_series:
detalhes = programa.duracao if hasattr(programa, 'duracao') else programa.temporadas
print(f'{programa.nome} - {detalhes} - {programa.likes}')
Agora minha segunda duvida eh relacionada a funcionalidade que eu criei, pois quando eu faço um laço na função info(), ela retorna None na ultima linha:
for programa in filmes_e_series:
print(f'{programa.info}\n')
retorno:
ET Ano: 1999 Duracao: 145 minutos Likes: 1 None
Mr. Robot - 2 temporada(s) Ano: 2018 Likes: 0 None
(as informacoes sobre os filmes e series foram tiradas da minha mente)