5
respostas

Print retornando onde está armazenado a lista

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.

5 respostas

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