At 12:47 PM 8/23/2010 -0700, Raymond Hettinger wrote:
As your example shows, property() defeats this intent by actually executing the code. A better behavior would not run the code at all. It would check the dictionaries along the MRO but not execute any descriptors associated with a given key.
That just introduces a new class of error when the descriptor can raise AttributeError (e.g. __slots__ descriptors). And of course, it ignoress __getattr__ and __getattribute__.