Boa noite, como vão? Estava acompanhando a aula e tentei modificar o final, para que ao invés de declarar uma lista com as variáveis filme e série, e depois printar os itens dessa lista, fizesse tudo isso em uma única linha. Segue meu código abaixo.
class Programa:
def __init__(self, nome, ano):
print('Iniciando init programa')
self._nome = nome.title()
self.ano = ano
self._likes = 0
@property
def likes(self):
return self._likes
def dar_likes(self):
self._likes += 1
@property
def nome(self):
return self._nome
@nome.setter
def nome(self, nome):
self._nome = nome
def __str__(self):
return f'{self.nome} - {self.ano} - {self.likes} likes'
class Filme(Programa):
def __init__(self, nome, ano, duracao):
print('Iniciando init filme')
super().__init__(nome,ano)
self.duracao = duracao
print('Fim init filme')
def __str__(self):
return f'{self.nome} - {self.ano} - {self.duracao} min - {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} - {self.ano} - {self.temporadas} temporadas - {self.likes} likes'
vingadores = Filme('vingadores', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)
lista = [vingadores, atlanta]
print('Tentativa com list comprehension - Não funcionou')
print(programa for programa in lista)
print('Tentativa normal')
for programa in lista:
print(programa)
Por que consigo printar na tentativa normal, mas quando tento fazer a list comprehension ele imprime o local da memória?