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