type renvoyé par __repr__

type renvoyé par __repr__ - Python - Programmation

Marsh Posté le 07-12-2006 à 16:35:01    

Bonjour !
 
Je viens de remarquer que __repr__ renvoie une chaîne de type str, même quand on lui force la main, comme dans l'exemple suivant :

Code :
  1. class C(object):
  2.     def __repr__(self):
  3.         return u"éâç"
  4. print type(repr(C()))   # résultat : str et non unicode


 
J'aimerais savoir comment contourner ce cast imposé par le langage et savoir pourquoi il existe. Ce serait bien pratique pour moi si mes __repr__() pouvait me renvoyer une chaîne unicode !
 
Merci d'avance !

Reply

Marsh Posté le 07-12-2006 à 16:35:01   

Reply

Marsh Posté le 07-12-2006 à 17:24:24    

Là je dois te dire que je n'en ais aucune idée.
 
C'est le genre de questions à aller poser sur la ML python (en explicant pourquoi tu veux que ton __repr__ renvoie de l'unicode)

Reply

Marsh Posté le 07-12-2006 à 17:32:56    

Merci Masklinn pour ta réponse.
 
En fait, voici mon problème : j'ai régulièrement besoin de représentations textuelles des objets que je crée. Tout naturellement (mais peut-être à tort), j'utilise des print mon_objet, qui font appel à la fonction __repr__ de la classe qui est derrière mon_objet. Or le texte utilise des caractères exotiques (japonais,...) et l'unicode est vraiment pratique dans ce cas.
 
Comment résoudriez-vous ce problème ?

Reply

Marsh Posté le 07-12-2006 à 17:37:33    

je ne me suis jamais posé la question, donc là encore je te conseille d'aller voir la mailing list python, tu pourras y poser ta question et avoir des réponses de gens connaissant bien mieux le langage que ceux de ce forum ;)

Reply

Marsh Posté le 09-12-2006 à 17:50:03    

La réponse m'intéresse également :jap:

Reply

Marsh Posté le 10-12-2006 à 17:53:18    

Bon, à force de me torturer les méninges, j'ai fini par comprendre ce que je cherche : surcharger print pour peaufiner simplement les sorties de mon programme. Une idée ?
 
(et merci de votre aide !)

Reply

Marsh Posté le 10-12-2006 à 17:54:16    

what ?

Reply

Marsh Posté le 12-12-2006 à 09:53:10    

Bon, désolé pour ma dernière question/remarque, c'est du grand n'importe quoi. Je vais chercher du côté de la mailing-list de Python pour savoir pourquoi __repr__ renvoie un str().

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed