Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Retornando a referencia da memoria

Oi pessoal boa noite,

Vi alguns tópcios parecidos com esse erro meu, mas como o código ta diferente, vou mandar aqui para entender especificamente o que tem de errado com o que escrevi, foi não acho de jeito nenhum T_T

class Programa:
    def __init__(self, nome, ano):
        self._nome = nome.title()
        self.ano = ano
        self._likes = 0

    def dar_like(self):
        self._likes += 1

    @property
    def likes(self):
        return self._likes

    @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

    def tamanho(self):
        return len(self.programas)


vingadores = Filme('vingadores - guerra infinita', 2018, 160)
atlanta = Serie('atlanta', 2018, 2)
tmep = Filme('Todo mundo em pânico', 1999, 100)
demolidor = Serie('Demolidor', 2016, 2)

vingadores.dar_like()
tmep.dar_like()
tmep.dar_like()
tmep.dar_like()
tmep.dar_like()
demolidor.dar_like()
demolidor.dar_like()
atlanta.dar_like()
atlanta.dar_like()
atlanta.dar_like()

filmes_e_series = [vingadores, atlanta, demolidor, tmep]
playlist_fim_de_semana = Playlist('fim de semana', filmes_e_series)

for programa in playlist_fim_de_semana.programas:
    print(programa)

Retorna:

<__main__.Filme object at 0x0000027033C5FF10>
<__main__.Serie object at 0x0000027033C5DFA0>
<__main__.Serie object at 0x0000027033C5DEB0>
<__main__.Filme object at 0x0000027033C5DF10>
2 respostas
solução!

Oi Vinicius.

Se entendi direito, você quer exibir o conteúdo do método imprime quando for dar um print(), certo?

No caso, você tem que alterar o método sua classe Programa que transforma ela em string, o método __str__.

Ai você define esse método dunder returnando o valor do imprime.

Aaaaaaaaaaaa tinha esquecido de ajustar o str! Sensacional Klaus, muito obrigado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software