Python 3.11+inspectфункция
inspect.ismethodwrapper()
дескрипторы
Проверяет, что объект — method-wrapper: специальный метод встроенного типа, уже связанный с экземпляром, как (1).__add__.
Синтаксис
inspect.ismethodwrapper(object) -> bool
Пару надо различать: int.__add__ — дескриптор (wrapper_descriptor), а (1).__add__ — method-wrapper, связанный с числом. ismethod для него False, isbuiltin — тоже False, поэтому код, ищущий «методы» через ismethod, такие объекты пропускает. Они появляются и у ваших объектов: obj.__str__, унаследованный от object, — тоже method-wrapper.
Примеры
import inspect
class A: pass
print(inspect.ismethodwrapper((1).__add__)) # → True
print(inspect.ismethodwrapper(int.__add__)) # → False — это дескриптор
print(inspect.ismethodwrapper(A().__str__), inspect.ismethod(A().__str__)) # → True False
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности