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

---

# 30.9. `pyclbr` – поддержка обозревателя классов Python

Модуль `pyclbr` позволяет получить ограниченную информацию о классах, методах и функциях верхнего уровня, определённых в модуле. Предоставленных сведений достаточно для реализации классического трёхпанельного обозревателя классов. Информация извлекается из исходного кода, а не путём импорта модуля, поэтому этот модуль безопасно использовать с недоверенным кодом. Из-за этого ограничения невозможно применить модуль к модулям, реализованным не на Python, включая все стандартные и дополнительные модули расширения.

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

Читает модуль и возвращает словарь, сопоставляющий имена классов с объектами-дескрипторами классов. Параметр

*module*

должен быть именем модуля в виде строки; это может быть имя модуля внутри пакета. Параметр

*path*

должен быть последовательностью и используется для дополнения значения

`sys.path`

, с помощью которого находится исходный код модуля.

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

Действует как

[`readmodule()`](https://python-all.ru/3.1/library/pyclbr.html#pyclbr.readmodule)

, но возвращаемый словарь, помимо сопоставления имён классов объектам-дескрипторам классов, также сопоставляет имена функций верхнего уровня объектам-дескрипторам функций. Кроме того, если читаемый модуль является пакетом, то ключ

`'__path__'`

в возвращаемом словаре содержит в качестве значения список с путём поиска пакета.

## 30.9.1. Объекты классов

Объекты `Class`, используемые в качестве значений в словаре, возвращаемом функциями [`readmodule()`](https://python-all.ru/3.1/library/pyclbr.html#pyclbr.readmodule) и [`readmodule_ex()`](https://python-all.ru/3.1/library/pyclbr.html#pyclbr.readmodule_ex), предоставляют следующие атрибуты:

#### `Class.module`

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

#### `Class.name`

Имя класса.

#### `Class.super`

Список объектов

`Class`

, описывающих непосредственные базовые классы описываемого класса. Классы, которые указаны как суперклассы, но не обнаружены

[`readmodule()`](https://python-all.ru/3.1/library/pyclbr.html#pyclbr.readmodule)

, перечисляются в виде строки с именем класса вместо объектов

`Class`

.

#### `Class.methods`

Словарь, отображающий имена методов в номера строк.

#### `Class.file`

Имя файла, содержащего оператор

`class`

, определяющий класс.

#### `Class.lineno`

Номер строки оператора

`class`

в файле, указанном в

[`file`](https://python-all.ru/3.1/library/pyclbr.html#pyclbr.Class.file)

.

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

Объекты `Function`, используемые в качестве значений в словаре, возвращаемом функцией [`readmodule_ex()`](https://python-all.ru/3.1/library/pyclbr.html#pyclbr.readmodule_ex), предоставляют следующие атрибуты:

#### `Function.module`

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

#### `Function.name`

Имя функции.

#### `Function.file`

Имя файла, содержащего оператор

`def`

, определяющий функцию.

#### `Function.lineno`

Номер строки оператора

`def`

в файле, указанном в

[`file`](https://python-all.ru/3.1/library/pyclbr.html#pyclbr.Function.file)

.
