o print ao final do meu codigo está retornando aonde estao armazenados os dados da string, e nao o que está armazenado. percebi que o erro é no laço for, comparei com o codigo disponivel e nao encontrei nada. estou sem entender o motivo.
o print ao final do meu codigo está retornando aonde estao armazenados os dados da string, e nao o que está armazenado. percebi que o erro é no laço for, comparei com o codigo disponivel e nao encontrei nada. estou sem entender o motivo.
Ola Rafael, Coloca seu código na descrição
Olá Leticia, segue o codigo até o momento
class Programa:
def __init__(self, nome, ano):
self._nome = nome.title()
self.ano = ano
self._likes = 0
@property
def likes(self):
return self._likes
def dar_like(self):
self._likes += 1
@property
def nome(self):
return self._nome
@nome.setter
def nome(self, novo_nome):
self._nome = novo_nome.title()
def imprime(self):
print(f"{self._nome} - {self.ano} - {self._likes} Likes")
class Filme (Programa):
def __init__(self, nome, ano, duracao):
super().__init__(nome, ano)
self.duracao = duracao
def imprime(self):
print(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 imprime(self):
print(f"{self._nome} - {self.ano} - {self.temporadas} Temporadas - {self._likes} Likes")
class Playlist():
def __init__(self, nome, programas):
self.nome = nome
self._programas = programas
@property
def listagem(self):
return self._programas
@property
def tamanho(self):
return len(self._programas)
vingadores = Filme("vingadores - guerra infinita", 2018, 160)
atlanta = Serie("atlanta", 2018, 2)
tmep = Filme("todo mundo em panico", 1999, 100)
demolidor = Serie("demolidor", 2016, 2)
vingadores.dar_like()
vingadores.dar_like()
vingadores.dar_like()
atlanta.dar_like()
atlanta.dar_like()
tmep.dar_like()
tmep.dar_like()
demolidor.dar_like()
demolidor.dar_like()
playlist_filmes_e_series = [vingadores, atlanta, demolidor, tmep]
minha_playlist = Playlist("fim de semana", playlist_filmes_e_series)
for programa in minha_playlist.listagem:
print(programa)
print(f"Tamanho: {len(minha_playlist.listagem)}")
Obrigado pela atenção
Empty
Olá Raphael, no caso do seu código o problema é que os objetos criados a partir das classes Serie e Filme não possuem a informação de como devem ser impressos caso solicitado. No Python, como informado acima, temos o método especial str(self) que faz justamente isso, portanto, caso você implemente:
def __str__(self):
return f"{self._nome} - {self.ano} - {self._likes} Likes"
no lugar de:
def imprime(self):
print(f"{self._nome} - {self.ano} - {self._likes} Likes")
na classe Programa por exemplo, já teria um resultado melhor, onde o nome, ano e quantidade likes seriam exibidos. Você pode utilizar essa mensa ideia nas outra classes para imprimir as informações específicas de cada uma delas, substituindo os métodos imprime pelo str(self)
funcionou !!! Muito Obrigado