Они используются для изменения поведения атрибутов. То есть модификация получения, изменения, и удаления свойств класса.
Их основное отличие это методы
__get__(obj, objtype), __set__(obj, value), __delete__(obj), которые используются для получения, изменения и удаления атрибута.На самом деле, тема довольно сложная, но в документации есть отличное HowTo, которое описывает все особенности дескрипторов и их возможное применение.
#теория
