Melhores práticas de codificação e tipo de saída para funções __repr __ ()?
Ultimamente, tenho tido muitos problemas com__repr__()
, format()
e codificações.A saída de__repr__()
ser codificado ou ser uma string unicode? Existe uma melhor codificação para o resultado de__repr__()
em Python? O que eu quero gerar possui caracteres não ASCII.
Eu uso o Python 2.xe quero escrever código que possa ser facilmente adaptado ao Python 3. O programa usa assim
# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function # The 'Hello' literal represents a Unicode object
Aqui estão alguns problemas adicionais que me incomodam e estou procurando uma solução que os resolva:
A impressão em um terminal UTF-8 deve funcionar (tenhosys.stdout.encoding
definido comoUTF-8
, mas seria melhor se outros casos funcionassem também).A canalização da saída para um arquivo (codificado em UTF-8) deve funcionar (nesse caso,sys.stdout.encoding
éNone
)Meu código para muitos__repr__()
funções atualmente tem muitosreturn ….encode('utf-8')
e isso é pesado. Existe algo robusto e mais leve?Em alguns casos, tenho até bestas feias comoreturn ('<{}>'.format(repr(x).decode('utf-8'))).encode('utf-8')
, ou seja, a representação dos objetos é decodificada, inserida em uma sequência de formatação e recodificada. Eu gostaria de evitar essas transformações complicadas.O que você recomendaria fazer para escrever simples__repr__()
funções que se comportam bem em relação a essas perguntas de codificação?