1
resposta

A diferença entre __repr__ e __str__ como método nas classes

Tipo, entendi a diferença entre eles na forma de função, que um retorna formal e o outro informal, mas se fosse usar numa classe como: def repr(self):

em que situação eu usaria str e em qual eu usaria repr ?

1 resposta

Em princípio o str deve permetir que o objeto seja 'legível', com foco no usuário final. É uma representação informal do objeto.

Já o repr é principalmente para depuração e será utilizado pela máquina (código). Assim, é desejável que ele forneça uma representação única do objeto e, se possivel, permetir que o objeto seja recriado.

A documentação diz que repr tenta retornar uma string, que ao ser passada para eval() deve retornar um objeto com o mesmo valor:

>>> eval(repr(var_objeto))==var_objeto
True

[https://docs.python.org/3/library/functions.html#repr]