How to change default behaviour of a class?

Stefan Franke spamfranke at bigfoot.de
Mon Aug 30 07:03:57 EDT 1999


On Mon, 30 Aug 1999 12:36:00 +0200, "Gerhard W. Gruber" <g.gruber at xsoft.co.at> wrote:

>How can I change what is printed when I use the statement "print class"?
>Usually this leads to an output like <class instance at 9aad60> but I
>rather want it to print variables contained in my class instead of the
>pointer adress.

>From your output I suppose meant "print instance" and "variables contained 
in my instance".

There are two special methods __repr__ and __str__, which can be used
to customize the classes string pepresentation. The print statement 
tries to call __str__. If __str__ is not defined it uses __repr__ or
the default representation otherwise.

See http://www.python.org/doc/current/ref/customization.html#l2h-128
for some documentation. 

A short example:

>>> class C:
...   def __repr__(self):
...     return repr (self.__dict__)
... 
>>> c = C()
>>> c.a = 1
>>> c.b = "My String"
>>> c
{'b': 'My String', 'a': 1}


Stefan





More information about the Python-list mailing list