Is the different behavior between __repr__ and __str__ intentional when it comes to printing lists? Basically I want to print out a list with elements of my own class, but when I overwrite __str__, __str__ doesn't get called but if I overwrite __repr__, __repr__ will get called. Is this a bug?
For example: >>> class StrElement(object): ... def __str__(self): ... return "String Element" ... >>> a = [StrElement(), StrElement()] >>> print a [<__main__.StrElement object at 0xb7dc05cc>, <__main__.StrElement object at 0xb7dc048c>] >>> print StrElement() String Element But if overwrite __repr__: >>> class ReprElement(object): ... def __repr__(self): ... return "Repr Element" ... >>> b = [ReprElement(), ReprElement()] >>> print b [Repr Element, Repr Element] >>> print ReprElement() Repr Element -- http://mail.python.org/mailman/listinfo/python-list