все Python 3typesпонятие
types.GetSetDescriptorType
дескрипторы и обёртки C
Тип вычисляемого атрибута у класса на C — аналог property: например, FunctionType.__dict__['__code__']. Пара к MemberDescriptorType.
Синтаксис
isinstance(obj, types.GetSetDescriptorType)
Такие атрибуты выглядят как обычные поля (func.__name__, func.__code__), но на деле читаются и пишутся функциями на C, которые могут проверить значение: присвоить func.__name__ = 5 нельзя — TypeError. Разница с MemberDescriptorType — в источнике значения: getset вычисляет его, member читает готовое поле структуры. В CPython это разные типы, но в других реализациях Python они могут совпадать — не стройте на разнице логику.
Примеры
import types
d = types.FunctionType.__dict__['__name__']
print(isinstance(d, types.GetSetDescriptorType)) # → True
def f():
pass
try:
f.__name__ = 5
except TypeError:
print('TypeError') # → TypeError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности