> **Источник:** https://python-all.ru/3.9/library/pyclbr.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# [`pyclbr`](https://python-all.ru/3.9/library/pyclbr.html#module-pyclbr) – поддержка браузера модулей Python

**Исходный код:** [Lib/pyclbr.py](https://python-all.ru/src/3.9/Lib/pyclbr.py)

---

Модуль [`pyclbr`](https://python-all.ru/3.9/library/pyclbr.html#module-pyclbr) предоставляет ограниченную информацию о функциях, классах и методах, определённых в модуле, написанном на Python. Этой информации достаточно для реализации браузера модулей. Информация извлекается из исходного кода Python, а не путём импорта модуля, поэтому данный модуль безопасно использовать с недоверенным кодом. Это ограничение делает невозможным использование этого модуля с модулями, реализованными не на Python, включая все стандартные и опциональные модули расширения.

#### `pyclbr.readmodule(module, path=None)`

Возвращает словарь, сопоставляющий имена классов уровня модуля с дескрипторами классов. Если возможно, включаются дескрипторы для импортированных базовых классов. Параметр *module* – это строка с именем модуля для чтения; это может быть имя модуля внутри пакета. Если указан, *path* – это последовательность путей к каталогам, добавляемая к `sys.path`, которая используется для поиска исходного кода модуля.

Эта функция – исходный интерфейс, сохранённый только для обратной совместимости. Она возвращает отфильтрованную версию следующего.

#### `pyclbr.readmodule_ex(module, path=None)`

Возвращает словарное дерево, содержащее дескрипторы функций или классов для каждой функции и класса, определённых в модуле с помощью оператора `def` или `class`. Возвращаемый словарь сопоставляет имена функций и классов уровня модуля с их дескрипторами. Вложенные объекты помещаются в словарь children своего родителя. Как и в readmodule, *module* задаёт имя читаемого модуля, а *path* добавляется к sys.path. Если читаемый модуль является пакетом, возвращаемый словарь содержит ключ `'__path__'`, значением которого является список, содержащий путь поиска пакета.

Новое в версии 3.7: Дескрипторы для вложенных определений. Они доступны через новый атрибут children. Каждый имеет новый атрибут parent.

Дескрипторы, возвращаемые этими функциями, являются экземплярами классов Function и Class. Пользователи не должны создавать экземпляры этих классов.

## Объекты функций

Экземпляры класса `Function` описывают функции, определённые с помощью операторов def. Они имеют следующие атрибуты:

#### `Function.file`

Имя файла, в котором определена функция.

#### `Function.module`

Имя модуля, определяющего описываемую функцию.

#### `Function.name`

Имя функции.

#### `Function.lineno`

Номер строки в файле, с которой начинается определение.

#### `Function.parent`

Для функций верхнего уровня – None. Для вложенных функций – родитель.

Добавлено в версии 3.7.

#### `Function.children`

Словарь, отображающий имена в дескрипторы для вложенных функций и классов.

Добавлено в версии 3.7.

## Объекты класса

Экземпляры класса `Class` описывают классы, определённые операторами class. Они имеют те же атрибуты, что и Functions, и ещё два.

#### `Class.file`

Имя файла, в котором определён класс.

#### `Class.module`

Имя модуля, определяющего описываемый класс.

#### `Class.name`

Имя класса.

#### `Class.lineno`

Номер строки в файле, с которой начинается определение.

#### `Class.parent`

Для классов верхнего уровня – None. Для вложенных классов – родительский.

Добавлено в версии 3.7.

#### `Class.children`

Словарь, отображающий имена в дескрипторы для вложенных функций и классов.

Добавлено в версии 3.7.

#### `Class.super`

Список объектов `Class`, описывающих непосредственные базовые классы описываемого класса. Классы, которые указаны как суперклассы, но не обнаруживаются с помощью [`readmodule_ex()`](https://python-all.ru/3.9/library/pyclbr.html#pyclbr.readmodule_ex), перечисляются как строка с именем класса вместо объектов `Class`.

#### `Class.methods`

Словарь, сопоставляющий имена методов с номерами строк. Его можно получить из более нового словаря children, но он сохранён для обратной совместимости.
