[Python-Dev] Non-string keys in namespace dicts

Neil Toronto ntoronto at cs.byu.edu
Mon Dec 3 20:27:25 CET 2007


Guido van Rossum wrote:
> On Dec 2, 2007 12:49 PM, Neil Toronto <ntoronto at cs.byu.edu> wrote:
>> It turned out not *that* hard to code around for attribute caching, and
>> the extra cruft only gets invoked on a cache miss. The biggest problem
>> isn't speed - it's that it's possible (though extremely unlikely), while
>> testing keys for equality, that a rich compare alters the underlying
>> dict. This causes the caching lookup to have to try to get an entry
>> pointer again, which could invoke the rich compare, which might alter
>> the underlying dict..
> 
> How about subclasses of str? These have all the same issues...

Yeah. I ended up having it, per class, permanently revert to uncached 
lookups when it detects that a class dict in the MRO has non-string 
keys. That's flagged by lookdict_string, which uses PyString_CheckExact.

Neil


More information about the Python-Dev mailing list