confused about __str__ vs. __repr__

Neal Becker ndbecker2 at gmail.com
Thu Dec 18 15:20:56 CET 2008


Tino Wildenhain wrote:

> Neal Becker wrote:
>> Reading some FAQ, I see that __str__ is "meant for human eyes".
>> 
>> But it seems that:
>> class X(object):
>>     def __str__(self):
>>         return "str"
>>     def __repr__(self):
>>         return "repr"
>> 
>> x = X()
>> d = {0 : x}
>> print d
>> {0: repr}
>> 
>> So if __str__ is "meant for human eyes", then why isn't print using it!
> 
> it is:
> 
>  > print x
> str
> 
> but dict just uses repr() for all its childs to print.
> 
> T.
That makes no sense to me.  If I call 'print' on a container, why wouldn't it recursively  print on the contained objects?  Since print means call str, printing a container should recursively call str on the objects.




More information about the Python-list mailing list