[Python-Dev] Data descriptor doc/implementation inconsistency

Nick Coghlan ncoghlan at gmail.com
Tue Jan 12 10:39:39 CET 2010

Michael Foord wrote:
>> Note that the behaviour here is still different from that of a data
>> descriptor: with a data descriptor, once it gets shadowed in the
>> instance dictionary, the descriptor is ignored *completely*. The only
>> way to get the descriptor involved again is to eliminate the shadowing.
>> The non-data descriptor with only __set__ is just choosing not to
>> override the attribute lookup process.
> Does that mean we need a third class of descriptors that are neither
> data descriptors nor non-data descriptors?

Not really - leaving out __get__ when defining __set__ just creates a
data descriptor that happens to use the default attribute look-up
process rather than defining a different one.

(Note that I had the data/non-data terminology backwards in my previous
message - I tend to think of the two kinds of descriptor as enforced and
non-enforced respectively precisely because I have to think about it to
remember that "functions are non-data descriptors and properties are
data descriptors, hence non-data descriptors only define __get__ while
data descriptors define __set__". I don't find the data/non-data
terminology intuitive at all)


Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia

More information about the Python-Dev mailing list