15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

print(repr(5))

print(repr('5'))

>>>

5

'5'

Isso é equivalente a usar o formatador '%r' e o operador %.

print('%r' % 5)

print('%r' % '5')

>>>

5

'5'

Para objetos dinâmicos em Python, a string humanamente legível default é o

mesmo valor que o mostrado por repr. Isso significa que passar um objeto

dinâmico diretamente ao print será o mesmo que repassá-lo explicitamente via

repr. Infelizmente, o valor default de repr para instâncias de objeto não é lá

muito útil. No exemplo a seguir, definimos uma classe muito simples e

mostramos seu valor na tela:

class OpaqueClass(object):

def __init__(self, x, y):

self.x = x

self.y = y

obj = OpaqueClass(1, 2)

print(obj)

>>>

<__main__.OpaqueClass object at 0x107880ba8>

Essa saída não pode ser passada à função eval, e não diz nada sobre os campos

de interface do objeto.

Temos duas soluções para o problema. Se a classe está sob nosso controle,

podemos definir nosso próprio método especial __repr__ que devolve strings

contendo a expressão em Python que recria o objeto. No exemplo a seguir,

definimos essa função para a classe acima:

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!