Python Glossary English

Python 3.7+typesпонятие

types.WrapperDescriptorType

дескрипторы и обёртки C

Тип «слотовых обёрток» встроенных классов вроде object.__init__ или int.__add__: специальный метод на C, взятый у класса, а не у экземпляра.

Синтаксис

isinstance(obj, types.WrapperDescriptorType)

Если вывести int.__add__, Python покажет <slot wrapper '__add__' of 'int' objects> — это и есть WrapperDescriptorType. Он не FunctionType и не MethodType, поэтому декоратор или проверка, перечисляющие эти типы, его пропустят. Взятый у экземпляра ((1).__add__), он превращается в MethodWrapperType — так же, как функция класса превращается в метод. Для распознавания «любой подпрограммы» есть inspect.isroutine().

Примеры

import types
print(isinstance(int.__add__, types.WrapperDescriptorType))  # → True
print(isinstance((1).__add__, types.MethodWrapperType))  # → True
print(int.__add__(2, 3))  # → 5

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности