A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/2004-August/048486.html below:

[Python-Dev] unicode and __str__

[Python-Dev] unicode and __str__ [Python-Dev] unicode and __str__Neil Schemenauer nas at arctrix.com
Mon Aug 30 22:18:16 CEST 2004
With Python 2.4:

    >>> u = u'\N{WHITE SMILING FACE}'
    >>> class A:
    ...   def __str__(self):
    ...     return u
    ... 
    >>> class B:
    ...   def __unicode__(self):
    ...     return u
    ... 
    >>> u'%s' % A()
    u'\u263a'
    >>> u'%s' % B()
    u'\u263a'

With Python 2.3:

    >>> u'%s' % A()
    Traceback (most recent call last):
      File "<stdin>", line 1, in ?
    UnicodeEncodeError: 'ascii' codec can't encode character u'\u263a' in
        position 0: ordinal not in range(128)
    >>> u'%s' % B()
    u'<__main__.B instance at 0x401f910c>'

The only thing I found in the NEWS file that seemed relevant is
this note:

  u'%s' % obj will now try obj.__unicode__() first and fallback to
  obj.__str__() if no __unicode__ method can be found.

I don't think that describes the behavior difference.  Allowing
__str__ return unicode strings seems like a pretty noteworthy
change (assuming that's what actually happened).

Also, I'm a little unclear on the purpose of the __unicode__ method.
If you can return unicode from __str__ then why would I want to
provide a __unicode__ method?  Perhaps it is meant for objects that
can either return a unicode or a string representation depending on
what the caller prefers.  I have a hard time imagining a use for
that.

  Neil
More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4