In the section "Invoking Descriptors" of Descriptor HowTo Guide, it says:
" data descriptors always override instance dictionaries.
non-data descriptors may be overridden by instance dictionaries. "
And it also says:
" The implementation works through a precedence chain that gives data descriptors priority over instance variables, instance variables priority over non-data descriptors, and assigns lowest priority to __getattr__() if provided. "
Then, the non-data descriptor should always be overridden by instance dictionaries. Why it use "may be" here? How should I understand this statement?