все Python 3typesпонятие
types.MemberDescriptorType
дескрипторы и обёртки C
Тип атрибута-слота: его создаёт __slots__ в вашем классе, и он же описывает поля структур на C, например timedelta.days.
Синтаксис
isinstance(obj, types.MemberDescriptorType)
Каждое имя из __slots__ превращается в MemberDescriptorType в __dict__ класса — именно он хранит значение в фиксированной ячейке экземпляра вместо словаря. Отсюда ловушка: пока атрибут не присвоен, чтение даёт AttributeError, хотя имя «объявлено». И ещё одна: класс со __slots__ без '__weakref__' не поддерживает слабые ссылки.
Примеры
import types
class Point:
__slots__ = ('x', 'y')
print(isinstance(Point.__dict__['x'], types.MemberDescriptorType)) # → True
p = Point()
try:
p.x
except AttributeError:
print('AttributeError') # → AttributeError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности