все Python 3inspectфункция
inspect.ismethoddescriptor()
дескрипторы
Проверяет, что объект — дескриптор метода: у него есть __get__, но нет __set__ и __delete__ (например, int.__add__, list.append).
Синтаксис
inspect.ismethoddescriptor(object) -> bool
Функции и классы под проверку не попадают, хотя у функции есть __get__: для них ismethoddescriptor возвращает False, потому что isfunction и isclass «обещают больше». Зато объекты classmethod и staticmethod, взятые из __dict__ класса, — дескрипторы методов. Типичное место встречи — list.append: это не builtin и не функция, а именно дескриптор метода.
Примеры
import inspect
class A:
def m(self): pass
@classmethod
def cm(cls): pass
print(inspect.ismethoddescriptor(list.append)) # → True
print(inspect.ismethoddescriptor(A.__dict__['m'])) # → False — это функция
print(inspect.ismethoddescriptor(A.__dict__['cm'])) # → True
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности