Neil Schemenauer wrote: > On Tue, Aug 31, 2004 at 10:23:33AM +0200, M.-A. Lemburg wrote: > >>__str__ is indeed allowed to return Unicode objects >>(and has been for quite a while). > > [...] > >>Now back to your original question: the change you see >>in %-formatting was actually a bug fix. Python 2.3 should >>have exposed the same behavior as 2.4 does now. > > > I think the note in NEWS is not quite accurate. It says: > > Let u'%s' % obj try obj.__unicode__() first and fallback to > obj.__str__(). > > The change in PyUnicode_Join replaces a PyObject_Str() call with I think you meant PyUnicode_Format(). > PyObject_Unicode(). That means that this works in 2.4: > > class A: > def __str__(self): > return u'\u1234' > > u'%s' % A() > > Perhaps that is unintentional but it seems cleaner to me than adding > a __unicode__ method and not providing a __str__ method. This is intended. However, you'll find that calling str(A()) will not give you a Unicode object, but an exception instead. The reason is that even though the __str__ method may pass back a Unicode object, PyObject_Str() still assures that its return value is a string (and that API is used by str()). Basically, __unicode__ is to unicode() what __str__ is to str(). -- Marc-Andre Lemburg eGenix.com Professional Python Services directly from the Source (#1, Aug 31 2004) >>> Python/Zope Consulting and Support ... http://www.egenix.com/ >>> mxODBC.Zope.Database.Adapter ... http://zope.egenix.com/ >>> mxODBC, mxDateTime, mxTextTools ... http://python.egenix.com/ ________________________________________________________________________ ::: Try mxODBC.Zope.DA for Windows,Linux,Solaris,FreeBSD for free ! ::::
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