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

diferença do __repr__ com __str__

Olá,gostaria entender pq no código abaixo não posso troca repr por str e dar o mesmo resultado,do que entendo os dois são métodos mágicos que tem a função para exibir

com repr

class Usuario:

    contador = 0
    usuarios_armazenados = []

    def __init__(self, nome, idade):
        self.id = None
        self.nome = nome
        self.idade = idade

    def salvar(self):

        self.__class__.contador += 1
        self.id = self.__class__.contador
        self.__class__.usuarios_armazenados.append(self)



    def __repr__(self):
        return '<{}: {} - {} - {}>\n'.format(self.__class__.__name__, self.id, self.nome, self.idade)


    @classmethod
    def all(cls):
        return cls.usuarios_armazenados


if __name__ == '__main__':
    u1 = Usuario('Regis', 35)
    u1.salvar()
    u2 = Usuario('Fabio', 20)
    u2.salvar()
    print(Usuario.all())

resutado:[<Usuario: 1 - Regis - 35>, <Usuario: 2 - Fabio - 20> ]

com str

class Usuario:

    contador = 0
    usuarios_armazenados = []

    def __init__(self, nome, idade):
        self.id = None
        self.nome = nome
        self.idade = idade

    def salvar(self):

        self.__class__.contador += 1
        self.id = self.__class__.contador
        self.__class__.usuarios_armazenados.append(self)



    def __str__(self):
        return '<{}: {} - {} - {}>\n'.format(self.__class__.__name__, self.id, self.nome, self.idade)


    @classmethod
    def all(cls):
        return cls.usuarios_armazenados


if __name__ == '__main__':
    u1 = Usuario('Regis', 35)
    u1.salvar()
    u2 = Usuario('Fabio', 20)
    u2.salvar()
    print(Usuario.all())

resultado:[<main.Usuario object at 0x03760EF0>, <main.Usuario object at 0x03760FF0>]

2 respostas

Olá Ian!

Achei uma discussão bacana que fala sobre a diferença de ambos e pode te ajudar a entender como funciona:

https://pt.stackoverflow.com/questions/176464/qual-%C3%A9-a-diferen%C3%A7a-entre-str-e-repr

Espero que tenha ajudado! :D

Bons estudos! ^^

solução!

olá,guilherme poderia olhar pq o codigo acima esta dando erro