Making a list-inhereted object return standard repr?
tdelaney at avaya.com
Mon Feb 4 00:01:15 CET 2002
> From: Philip Swartzleonard [mailto:starx at pacbell.net]
> Jason Orendorff || Fri 01 Feb 2002 08:32:57p:
> > Philip Swartzleonard wrote:
> >> Ok, so i decided to make my container class inherit from
> list, [...]
> >> I want to change __repr__ and __str__ to do something more like the
> >> first case again [...]
> > class Foo(list):
> > def __repr__(self):
> > basic = object.__repr__(self)
> > values = list.__repr__(self)
> > return basic[:-1] + ' containing ' + values + '>'
> > ## Jason Orendorff http://www.jorendorff.com/
> Thanks! That's copy-and-paste'ly what i need. I knew it was
> something more
> or less obvious i was missing %D.
> (although i may have to leave out the contains, as it gives
> me things like
> <__main__.Cell object at 0x015F0210 containing
> [<__main__.Player object at
> 0x015E7870 containing >]> ... so far every object is a container :)
This brings up the interesting question of whether there should be a an
object method which returns the "canonical repr" of an object i.e. the
<module.Class object at address> or possibly even a builtin method (so it
would work with classic classes too).
I know I've wanted to use this in classic classes many times for debugging
purposes - I want to be easily able to distinguish instances from each
other. Each time I end up having to code it myself.
More information about the Python-list