Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como implementar método __repr__?

Olá, não entendi como ficaria método de cada classe para imprimir como o exemplo: Filme(nome='vingadores', ano=2018, duracao=160)

Seria algo tipo:

class Programa:
    def __repr__(self):
        return ...

class Serie(Programa):
    def __repr__(self):
        return ...

class Filme(Programa):
    def __repr__(self):
        return ...

for programa in listinha:
    print(programa)

Alguém sabe me explicar como implementar o __repr__ e o que vai no lugar de ...? Obrigado.

1 resposta
solução!

repr é feito para para o interpretador do python. Então ele basicamente serve apenas para informar o que contém no objeto. Ex:

class Programa:
    def __init__(self, nome, duracao):
        self.nome = nome
        self.duracao= duracao

    #Serve para usuário final
    def __str__(self):
        return f'O programa {self.nome} tem {self.duracao}  minutos'

    #Serve para o desenvolvedor
    def __repr__(self):
        return (f"Programa(nome='{self.nome}', "
               f'duracao={str(self.duracao)})')


p = Programa('seila', 8)
print(p) #printa __str__
print(repr(p)) #printa __repr__

Saida:

#O programa seila tem 8  minutos
#Programa(nome='seila', duracao=8)

Vale lembrar que se implementarmos apenas o repr no nosso programa, ele irá ser considerado também como __str__