__repr__ et __str__

__repr__ et __str__ - Python - Programmation

Marsh Posté le 31-01-2011 à 14:05:48    

Bonjour,
 
Quelle est la différence entre __str__ et __repr__ ?
 
Par exemple :
 

Code :
  1. class fonction1(object):
  2.        def __init__(self,a,b,c):
  3.             self.a = a
  4.             self.b = b
  5.             self.c = c
  6.        def __str__(self):
  7.           return "%d %d %d" % (self.a, self.b, self.c)


 
 
comment réécrire ce code avec __repr__ ?
 
 
Merci de votre aide.

Reply

Marsh Posté le 31-01-2011 à 14:05:48   

Reply

Marsh Posté le 31-01-2011 à 14:08:58    

il me semble que, dans l'esprit :
__str__ donne une représentation humainement lisible de l'objet
__repr__ donne une représentation "machine" (exécutable via eval par exemple) de cet objet


Message édité par theshockwave le 31-01-2011 à 14:09:22

---------------
last.fm
Reply

Marsh Posté le 31-01-2011 à 14:27:23    

Donc, __str__ et __repr__ font pratiquement la même chose ?

 

Je peux donc écrire :

 

[CODE]
def __repr__(self):
     return "%d %d %d" % (self.a, self.b, self.c)
[\CODE]

 

c'est bien cela ou il faut réécrire autrement avec __repr__ ?

 


Message édité par cricket18 le 31-01-2011 à 14:28:28
Reply

Marsh Posté le 31-01-2011 à 15:11:20    

Quelques postes ta question:


Pour ton code, tu peux aussi faire:

Code :
  1. def __repr__(self):
  2.     return "%d %d %d" % (self.a, self.b, self.c)
  3. __str__ = __repr__

Reply

Marsh Posté le 31-01-2011 à 15:46:34    

l'un des articles que tu lies a un commentaire qui suggère une implémentation qui vérifies cette expression :

Code :
  1. eval(repr(c))==c


 
Je trouve que c'est une bonne chose de faire un repr de ce genre là autant que possible.


---------------
last.fm
Reply

Sujets relatifs:

Leave a Replay

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