Rafe wrote: > Thanks for the idea Peter. What confuses me is why this only happens > to @Property (and I assume other decorator related bindings?). Does it > have something to do with the way the class gets built? 'Normal' > attributes will raise AttributeErrors as expected, without triggering > __getattr__(). Considering this is a built-in decorator, it would be > nice if this behavior was fixed if possible.
Normal attributes either exist, and then they don't raise an AttributeError, or they don't exist, and then __getattr__() *is* triggered. The problem has nothing to do with decorators. It is just that properties invoke custom code, and Python currently has no way of finding out whether an AttributeError was raised accidentally by a buggy getter or whether it is meant to signal that the attribute wasn't found in the class hierarchy and now should be calculated by __getattr__(). I guess (without looking into the C source) that it could be changed to meet your intuition but that it would complicate the implementation. Peter -- http://mail.python.org/mailman/listinfo/python-list