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) Cheers, Nick. -- Nick Coghlan | ncogh...@gmail.com | Brisbane, Australia --------------------------------------------------------------- _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com