[Python-Dev] unicode and __str__

"Martin v. Löwis" martin at v.loewis.de
Mon Aug 30 23:35:17 CEST 2004


Neil Schemenauer wrote:
> But unicode() will also return __str__, eg.
> 
>     >>> class A:
>     ...   def __str__(self): 
>     ...     return u'\u1234'
>     ... 
>     >>> unicode(A())
>     u'\u1234'
> 
> Why would I want to use __unicode__?  

This class is incorrect: it does not support str().

> Shouldn't we be heading to a
> world where __str__ always returns unicode objects?

No. In some cases, str() needs to compromise, where unicode() doesn't.

> Now, say your class stores unicode character data.  You could have
> __unicode__ return a unicode object and have __str__ encode it
> somehow and return a str.  However, that seems like a horrible
> design to me.

Perhaps. What are you proposing to do about this? Ban, from the face
of the earth, what seems like a horrible design to you?

Regards,
Martin


More information about the Python-Dev mailing list