Python Glossary English

Python 3.7+typesпонятие

types.MethodWrapperType

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

Тип специального метода встроенного класса, уже связанного с экземпляром: (1).__add__, object().__str__. Пара к WrapperDescriptorType.

Синтаксис

isinstance(obj, types.MethodWrapperType)

Это «связанный метод» для слотовых методов на C: self уже подставлен, поэтому (1).__add__(2) даёт 3. Ловушка — путать его с MethodType: isinstance((1).__add__, types.MethodType) даёт False, хотя по смыслу это тоже связанный метод. Встречается, когда передают в map или sorted специальный метод экземпляра. Проверять «можно ли вызвать» надёжнее через callable().

Примеры

import types
add_one = (1).__add__
print(isinstance(add_one, types.MethodWrapperType))  # → True
print(isinstance(add_one, types.MethodType))  # → False
print(list(map(add_one, [10, 20])))  # → [11, 21]

См. также

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