Guido van Rossum wrote: > > > hasattr(), getattr(), and doubtless other built-in functions > > don't accept Unicode strings at all: > > > > >>> import sys > > >>> hasattr(sys, u'abc') > > Traceback (most recent call last): > > File "<stdin>", line 1, in ? > > TypeError: hasattr, argument 2: expected string, unicode found > > > > Is this a bug or a feature? I'd say bug; the Unicode should be > > coerced using the default ASCII encoding, and an exception raised if > > that isn't possible. > > Agreed. > > There are probably a bunch of things that need to be changed before > thois works though; getattr() c.s. require a string, then call > PyObject_GetAttr() which also checks for a string unless the object > supports tp_getattro -- but that's only true for classes and > instances. > > Also, should we convert the string to 8-bit, or should we allow > Unicode attribute names? Attribute names will have to be 8-bit strings (at least in 2.0). The reason here is that attributes are normally Python identifiers which are plain ASCII and stored as 8-bit strings in the namespace dictionaries, i.e. there's no way to add Unicode attribute names other than by assigning directly to __dict__. Note that keyword lookups already automatically convert Unicode lookup strings to 8-bit using the default encoding. The same should happen here, IMHO. > It seems there's no easy fix -- better address this after 2.0 is > released. Why wait for 2.1 ? -- Marc-Andre Lemburg ______________________________________________________________________ Business: http://www.lemburg.com/ Python Pages: http://www.lemburg.com/python/
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