У меня есть библиотека module-wrapper , которая рекурсивно оборачивает объекты. Я хочу определить, имеет ли объект функциональный тип. Я могу проверить почти все функциональные объекты, используя:
inspect.isbuiltin(object=obj) or
inspect.isfunction(object=obj) or
inspect.ismethod(object=obj) or
inspect.ismethoddescriptor(object=obj)
Проблема в том, что некоторые связанные методы не обнаруживаются в этом коде, например:
s = "Hello, world!"
type(s.__add__)
# method-wrapper
Полагаю, я не могу проверить объекты на method-wrapper
с помощью модуля inspect
. Но как мне импортировать этот тип? Я не нашел его.
Теперь у меня ужасный хак в моем коде:
MethodWrapper = type(''.__add__)
isinstance(obj, MethodWrapper)
UPD0:
Я не хочу использовать callable
, потому что он обнаруживает классы и объекты, которые реализуют __call__
, но я хочу, чтобы эти классы и объекты обрабатывались отдельно.