все Python 3inspectфункция
inspect.ismemberdescriptor()
дескрипторы
Проверяет, что объект — member-дескриптор: поле фиксированного места в объекте, как записи __slots__ или поля C-структур.
Синтаксис
inspect.ismemberdescriptor(object) -> bool
Самый частый источник — ваш же __slots__: каждое имя слота превращается в member-дескриптор в __dict__ класса. Через экземпляр вы получите значение, а у незаполненного слота — AttributeError, хотя имя в классе есть. property сюда не относится. Как и isgetsetdescriptor, это деталь реализации CPython.
Примеры
import inspect
class Point:
__slots__ = ('x', 'y')
print(inspect.ismemberdescriptor(Point.__dict__['x'])) # → True
p = Point()
p.x = 1
try:
p.y
except AttributeError:
print('слот y пуст') # → слот y пуст
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности