inspect - сбор информации о существующих объектах

inspect.cleandoc(doc)

Приводит в порядок строку документирования doc, замещая все символы табуляции пробелами и удаляя отступы, которые могли быть добавлены, чтобы выровнять строку документирования в соответствии с другими инструкциями в функции или в методе.

inspect.currentframe()

Возвращает объект кадра стека, соответствующий кадру стека вызывающей функции.

inspect.formatargspec(args[, varags[, varkw[, defaults]]])

Возвращает отформатированную строку, представляющую значения, возвращаемые функцией getargspec().

inspect.formatargvalues(args[, varargs[, varkw[, locals]]])

Возвращает отформатированную строку, представляющую значения, возвращаемые функцией getargvalues().

inspect.getargspec(func)

Для заданной функции func возвращает именованный кортеж ArgSpec(args, varargs, varkw, defaults), где

  • args – это список имен аргументов функции func,
  • varargs – имя аргумента, начинающегося с символа * (если имеется),
  • varkw – имя аргумента, начинающегося с символов ** (если имеется),
  • defaults – кортеж значений по умолчанию для аргументов или None, если аргументы со значениями по умолчанию отсутствуют.

Если в функции func имеются аргументы со значениями по умолчанию, кортеж defaults пред- ставляет значения последних n аргументов в списке args, где n – результат вызова функции len(defaults).

inspect.getargvalues(frame)

Возвращает значения аргументов, переданных функции с кадром стека frame. Возвращает кортеж ArgInfo(args, varargs, varkw, locals), где

  • args - список имен аргументов,
  • varargs – имя аргумента, начинающегося с символа * (если имеется),
  • varkw – имя аргумента, начинающегося с символов ** (если имеется),
  • locals – локальный словарь кадра стека.
inspect.getclasstree(classes[, unique])

Получая список classes связанных классов, эта функция воссоздает иерархию их наследования. Иерархия представлена как коллекция вложенных списков, где каждый элемент списка является списком классов, наследующих класс, непосредственно предшествующий этому списку. Каждый элемент вложенного списка является кортежем из 2 элементов (cls, bases), где cls – объект класса, а bases – кортеж базовых классов. Если в аргументе unique передается значение True, каждый класс будет включаться в возвращаемый список только один раз. В противном случае, когда используется множественное наследование, класс может появляться в списке несколько раз.

inspect.getcomments(object)

Возвращает строку, содержащую комментарии, непосредственно предшествующие объявлению объекта object в исходном программном коде наязыке Python. Если объект является модулем, возвращаются комментарии, расположенные в начале модуля. В случае отсутствия комментариев возвращается None.

inspect.getdoc(object)

Возвращает строку документирования объекта object. Перед этим строка документирования обрабатывается функцией cleandoc().

inspect.getfile(object)

Возвращает имя файла, в котором находится определение объекта object. Может вернуть TypeError, если эта информация не имеет смысла или недоступна (например, для встроенных функций).

inspect.getframeinfo(frame[, context])

Возвращает именованный кортеж Traceback(filename, lineno, function, code_context, index), содержащий сведения об объекте frame с информацией о кадре стека. Поля filename и lineno определяют местоположение в исходном программном коде. Аргумент context определяет количество строк конекста, которые будут извлекаться из исходного программного кода. Поле code_context в возвращаемом кортеже содержит список строк, составляющих контекст. Поле index – числовой индекс строки в этом списке, соответствующей кадру стека.

inspect.getinnerframes(traceback[, context])

Возвращает список записей в кадре стека для кадра объекта traceback с трассировочной информацией и для всех вложенных кадров. Каждая запись является кортежем из 6 элементов (frame, filename, lineno, funcname, code_context, index). Поля filename, lineno, context, code_context и index имеют тот же смысл, что и в кортеже, возвращаемом функцией getframeinfo().

inspect.getmembers(object[, predicate])

Возвращает все атрибуты объекта object. Обычно атрибуты выбираются с помощью атрибута __dict__ объекта, но эта функция может возвращать атрибуты, хранящиеся в других местах (например, строку документирования – из атрибута __doc__, имя объекта – из атрибута __name__ и так далее). Атрибуты возвращаются в виде списка пар (name, value). В необязательном аргументе predicate можно передать функцию, которая принимает атрибут объекта в качестве аргумента и возвращает True или False. В этом случае в список будут включены только те атрибуты, для которых функция predicate вернет True. В качестве функции predicate можно использовать такие функции, как isfunction() и isclass().

inspect.getmodule(object)

Возвращает модуль, в котором был объявлен объект object (если это возможно).

inspect.getmoduleinfo(path)

Возвращает информацию о том, как Python интерпретирует путь к файлу path. Если path не является модулем Python, возвращается None. В противном случае возвращается именованный кортеж ModuleInfo(name, suffix, mode, module_type), где name – это имя модуля, suffix – расширение имени файла, mode – режим открытия файла модуля и module_type – целочисленный код, определяющий тип модуля. Коды типов модулей определены в модуле imp.

inspect.getmodulename(path)

Возвращает имя модуля, заданного путем path. Если аргумент path не выглядит как модуль Python, возвращается None.

inspect.getmro(cls)

Возвращает кортеж классов, который является представлением порядка поиска методов в классе cls. Дополнительные подробности приводятся в главе 7 «Классы и объектно-ориентированное программирование».

inspect.getouterframes(frame[, context])

Возвращает список записей из текущего кадра стека и всех объемлющих кадров. Этот список является представлением последовательности вызовов функций, где первый элемент содержит информацию о кадре стека. Каждая запись является кортежем из 6 элементов (frame, filename, lineno, funcname, code_context, index), поля которого имеют тот же смысл, что и в кортеже, возвращаемом функцией getinnerframes(). Аргумент context имеет то же назначение, что и в функции getframeinfo().

inspect.getsourcefile(object)

Возвращает имя файла с исходным программным кодом на языке Python, где находится определение объекта object.

inspect.getsourcelines(object)

Возвращает кортеж (sourcelines, firstline), соответствующий определению объекта object. Поле sourcelines – список строк с исходным программным кодом, а поле firstline – номер первой строки с исходным программным кодом. Если исходный код невозможно получить, возбуждает исключение IOError.

inspect.getsource(object)

Возвращает исходный программный код объекта object в виде единственной строки. Если исходный код невозможно получить, возбуждает исключение IOError.

inspect.isabstract(object)

Возвращает True, если объект object является абстрактным базовым классом.

inspect.isbuiltin(object)

Возвращает True, если объект object является встроенной функцией.

inspect.isclass(object)

Возвращает True, если объект object является классом.

inspect.iscode(object)

Возвращает True, если объект object является объектом с программным кодом.

inspect.isdatadescriptor(object)

Возвращает True, если объект object является дескриптором данных. Таковыми считаются объекты, определяющие оба метода: __get__() и __set__().

inspect.isframe(object)

Возвращает True, если объект object является кадром стека.

inspect.isfunction(object)

Возвращает True, если объект object является функцией.

inspect.isgenerator(object)

Возвращает True, если объект object является генератором.

inspect.isgeneratorfunction(object)

Возвращает True, если объект object является функцией-генератором. Отличие от функции isgenerator() состоит в том, что данная функция проверяет, является ли объект функцией, которая при вызове создает генератор. Не может использоваться для проверки, является ли генератор активным.

inspect.ismethod(object)

Возвращает True, если объект object является методом.

inspect.ismethoddescriptor(object)

Возвращает True, если объект object является дескриптором метода. Таковыми считаются объекты, не являющиеся методами класса и определяющие метод __get__(), но не определяющие метод __set__().

inspect.ismodule(object)

Возвращает True, если объект object является модулем.

inspect.isroutine(object)

Возвращает True, если объект object является пользовательской или встроенной функцией или методом.

inspect.istraceback(object)

Возвращает True, если объект object является объектом с трассировочной информацией.

inspect.stack([context])

Возвращает список записей, соответствующих текущему кадру стека. Каждая запись является кортежем из 6 элементов (frame, filename, lineno, funcname, code_context, index), содержащих ту же информацию, которая возвращается функцией getinnerframes(). Аргумент context определяет количество строк контекста, которые должны возвращаться для каждой записи кадра.

inspect.trace([context])

Возвращает список записей для кадров стека между текущим кадром и кадром, в котором возникло исключение. Первая запись соответствует текущей функции, а последняя – кадру, в котором возникло исключение. Аргумент context определяет количество строк контекста, которые должны возвращаться для каждой записи кадра.