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 ?
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 ?
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