¿El mejor tipo de salida y prácticas de codificación para las funciones __repr __ ()?

Últimamente he tenido muchos problemas con__repr__(), format()y codificaciones.Debe la salida de__repr__() estar codificado o ser una cadena unicode? ¿Existe una mejor codificación para el resultado de__repr__() en Python? Lo que quiero generar tiene caracteres no ASCII.

Uso Python 2.x, y quiero escribir código que pueda adaptarse fácilmente a Python 3. El programa utiliza

# -*- coding: utf-8 -*-
from __future__ import unicode_literals, print_function  # The 'Hello' literal represents a Unicode object

Aquí hay algunos problemas adicionales que me han estado molestando, y estoy buscando una solución que los resuelva:

La impresión en un terminal UTF-8 debería funcionar (tengosys.stdout.encoding ajustado aUTF-8, pero sería mejor si otros casos funcionaran también).La canalización de la salida a un archivo (codificado en UTF-8) debería funcionar (en este caso,sys.stdout.encoding esNone)Mi código para muchos__repr__() actualmente tiene muchas funcionesreturn ….encode('utf-8')Y eso es pesado. ¿Hay algo robusto y más ligero?En algunos casos, incluso tengo bestias feas comoreturn ('<{}>'.format(repr(x).decode('utf-8'))).encode('utf-8'), es decir, la representación de los objetos se decodifica, se coloca en una cadena de formato y luego se vuelve a codificar. Me gustaría evitar tales transformaciones enrevesadas.

¿Qué recomendarías hacer para escribir de manera simple?__repr__() funciones que se comportan bien con respecto a estas preguntas de codificación?

Respuestas a la pregunta(3)

Su respuesta a la pregunta