Diferença entre __str__ e __repr__?
Qual é a diferença entre __str__
e __repr__
em Python?
2527
3
Qual é a diferença entre __str__
e __repr__
em Python?
A menos que você aja especificamente para garantir o contrário, a maioria das aulas não'não tem resultados úteis para nenhuma delas:
Como você vê -- nenhuma diferença, e nenhuma informação além da classe e do objeto's
id
. Se você apenas sobrescrever uma das duascomo você vê, se você substituir
__repr__
, isso's TAMBÉM usado para__str__
, mas não vice versa.Outras informações cruciais a saber:
__str__
em um recipiente embutido utiliza o__repr__
, NÃO o__str__
, para os itens que ele contém. E, apesar das palavras sobre o assunto encontradas em documentos típicos, quase ninguém incomoda fazendo a__repr__
de objetos ser uma string queeval
pode usar para construir um objeto igual (it's apenas muito difícil, E não saber como o módulo relevante foi realmente importado torna-o realmente impossível).Então, meu conselho: concentre-se em tornar
__str__
razoavelmente legível para humanos, e__repr__
o mais inequívoco possível, mesmo que isso interfira com o objetivo difuso e inatingível de tornar__repr__
's valor retornado aceitável como entrada para__eval__
!__repr__
: a representação do objeto python normalmente o eval irá convertê-lo de volta para aquele objeto__str__
: é o que você acha que é aquele objeto em forma de textopor exemplo
De an (An Unofficial) Python Reference Wiki (cópia de arquivo) por effbot:
"computa o "informal" representação em cadeia de um objeto. Isto difere de
__repr__
na medida em que não tem que ser uma expressão Python válida: uma representação mais conveniente ou concisa pode ser utilizada em seu lugar."