Neste artigo você verá a diferença entre __str__ e __repr__ em Python – descubra em qual situação utilizar cada um dos operadores!
Fala programador(a), beleza? Bora aprender mais sobre as instruções __str__ e __repr__ de Python!
Basicamente o __str__ serve para exibir ao usuário final um objeto
Já o __repr__ serve para exibir um objeto para os desenvolvedores do código
Veja um exemplo:
import datetime today = datetime.datetime.now() print(str(today)) # 2020-07-08 13:16:04.162076 print(repr(today)) # datetime.datetime(2020, 7, 8, 13, 16, 4, 162076)
Como você pode observar as saídas são diferentes, cada uma importa de uma forma específica para quem as lê
A primeira, com str, é legível aos clientes, já a de repr não
Porém a maioria das classes não tem diferenciação no resultado final, então tome cuidado
Veja um exemplo:
class Pessoa: def __init__(self, nome, idade): self.nome = nome self.idade = idade joao = Pessoa("João", 30) print(str(joao)) # <__main__.Pessoa object at 0x7f7c8903d4c0> print(repr(joao)) # <__main__.Pessoa object at 0x7f7c8903d4c0>
Neste caso não teria efeito mostrar o str para o cliente final
Podemos considerar que a função __str__ vai fornecer a forma mais legível possível de um objeto
Já o __repr__ é comumente utilizado por desenvolvedores para fazer o debug da aplicação, onde podem receber mais informações sobre um objeto no prompt
Conclusão
Neste artigo vimos a diferença entre __str__ e __repr__
A função str serve para exibir os resultados de uma classe para os clientes finais
Já com o repr nós podemos obter outros dados de uma classe, que não são úteis aos usuários do sistema
Confira também nosso catálogo de cursos gratuitos, com aulas semanais no YouTube