Marcus Mann 10 X 10
Última Atualização: 25-07-2018
Marcus Mann:~ Desktop$ python Representação de uma classe com o __repr__.py

> Post.tags
python

> Post.prev
Biblioteca de livros

> Post.next
O início
Representação de uma classe com o __repr__

Muitas pessoas que programam em python gostariam de criar uma representação para sua classe. E isso é muito simples, como exemplo iremos utilizar __repr__() e não o __str__() no final vocês irão entender o porquê.

Criamos uma classe em python desta forma:

1
2
class Pessoa:
pass

E a instanciamos dessa forma:

1
pessoa = Pessoa()

Agora se tentarmos utilizar o print na nossa variável pessoa, veja o que acontece:

1
2
print(pessoa)
# result => <__main__.Pessoa object at 0x10a25e240>

Esse foi o código que apareceu para mim, isso acontece porquê ao instanciar uma classe você está criando uma referência desta classe (objeto) na memória, e adivinha quem é o nosso intermediador? A variável pessoa. Ela é quem guarda a referência do objeto da classe Pessoa.
Quando tentamos da um print na variável pessoa, aparece então a refência da classe. Mas não é isso que nós queremos, correto? Para personalizar essa chamada, podemos criar um método chamado __repr__() que vai cuidar de todo trabalho sujo. Veja:

1
2
3
class Pessoa:
def __repr__(self):
return "<% Classe Pessoa %>"

Agora quando utilizamos o print:

1
2
print(pessoa)
# result => <% Classe Pessoa %>

Veja que agora toda aquela códificação anterior sumiu e o que apareceu foi o texto que nós colocamos. Tente sempre usar o __repr__() ao invés de __str__() pois se o python não consegui chamar o __str__() para sua classe, ele vai chamar o __repr__()

Claro que da para personalizar isso utilizando uma propriedade, mas isso será assunto de um próximo post.