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?

questionAnswers(3)

yourAnswerToTheQuestion