Kent Johnson wrote:
On Thu, Nov 12, 2009 at 6:35 AM, Luke Paireepinart
<rabidpoob...@gmail.com> wrote:
On Thu, Nov 12, 2009 at 5:29 AM, Jeff R. Allen <j...@nella.org> wrote:
You are looking for the __str__ method. See
http://docs.python.org/reference/datamodel.html#object.__str__

Can't you also implement __repr__?

Yes, in fact if you are only going to implement one of __str__ and
__repr__, arguably __repr__ is a better choice. __repr__() is called
by the interactive interpreter when it displays an object. __str__ is
called by print, and if you don't define __str__ it will call
__repr__. So defining only __str__ will not give a custom
representation unless you print:

In [1]: class Foo():
   ...:     def __str__(self):
   ...:         return "I'm a Foo"

In [2]: f = Foo()

In [3]: f
Out[3]: <__main__.Foo instance at 0x1433468>

In [4]: print f
I'm a Foo


Defining __repr__ will give the custom representation when you just
give the name of the object:

In [5]: class Foo2():
   ...:     def __repr__(self):
   ...:         return "I'm a Foo2"
   ...:
   ...:

In [6]: f2=Foo2()

In [7]: f2
Out[7]: I'm a Foo2

In [8]: print f2
I'm a Foo2

Kent

And one other important place that uses __repr__() is the printing of containers. So if you have a list of Foo2 objects, and you want to just say
   print mylist

it's better to have __repr__().


_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to