Python Glossary English

все 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Сообщить о неточности