hehe, ya, though believe me, I learned this one the hard-way too. I use to have an exception class that combined the two (KeyError and AttributeError), but that became problematic for other reasons.  Oh well, it's the price we pay for allowing both <code>instance.attribute</code> and <code>instance.['attribute']</code> interfaces to the same data.