Descriptors are objects that are (usually) attributes of classes and that have any of __get__, __set__, or __delete__ special methods.
Data Descriptors have any of __set__, or __delete__
These can control the dotted lookup on an instance, and are used to implement functions, staticmethod, classmet...