[Tutor] How to call a method with a print statement?

Modulok modulok at gmail.com
Fri Nov 13 17:35:39 CET 2009


List,

 __repr__() is exactly what I was looking for :)

You guys rock! Thank you.
-Modulok-

On 11/12/09, Dave Angel <davea at ieee.org> wrote:
>
>
> Kent Johnson wrote:
>> On Thu, Nov 12, 2009 at 6:35 AM, Luke Paireepinart
>> <rabidpoobear at gmail.com> wrote:
>>
>>> On Thu, Nov 12, 2009 at 5:29 AM, Jeff R. Allen <jra at 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 at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>


More information about the Tutor mailing list