Mel wrote: > Neal Becker wrote: > >> 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. > > Basically because there are too many right ways to format the resulting > report. Space separated? Tab separated? One per line? Boxes around > them? As HTML definition lists? Creating a standard report form would > take a lot of work and wouldn't, finally, solve very many peoples' > problems. > > Mel. > Thanks, but the question of how to format the container is different from how to format the primitive elements of the container. I was suggesting that printing an element of a container should be consistent with printing the element without the container, i.e.,
print [a] should be consistent with print a -- http://mail.python.org/mailman/listinfo/python-list