overloading print behavior
Alexander Schmolck
a.schmolck at gmx.net
Mon Apr 28 00:54:25 EDT 2003
Cere Davis <cere at u.washington.edu> writes:
> So I have a function like:
>
> class C:
> def __init__(self):
> self.a="asdf"
> self.b="123"
> c=C()
> st=["abc",c]
>
> When I:
>
> print st
>
> I get:
>
> ['abc', <__main__.C instance at 0x40288fac>]
>
> Which is what I expect, but I would like it if print or perhaps the str()
> coercion that is happening behind the scenes would walk through my C instance
>
> and resolve the name/value paris within the C class and print the values.
> Something like:
>
>
> print st
>
> > 'abc',<C instance>['a=asdf','b=123']
> Could someone enlighten me on this simple concept?
Sure:
class C:
def __init__(self):
self.a="asdf"
self.b="123"
def __repr__(self):
return "<%s instance with a=%r, b=%r>" % (self.__class__,
self.a, self.b)
>>> C()
<__main__.C instance with a='asdf', b='123'>
The place to look these things up is the language reference (all "magical"
methods used to customize instance behavior are listed there).
'as
More information about the Python-list
mailing list