# 32.9. `pyclbr` --- Python クラスブラウザサポート

ソースコード: Lib/pyclbr.py

この `pyclbr` モジュールはモジュールで定義されたクラス、メソッド、およびトップレベルの関数について、限られた量の情報を取得するのに使われます。伝統的な 3 ペイン形式のクラスブラウザを実装するのに十分な情報を提供します。情報は、モジュールのインポートによらず、ソースコードから抽出します。このため、このモジュールは信用できないソースコードに対して利用しても安全です。この制限から、多くの標準モジュールやオプションの拡張モジュールを含む、 Python で実装されていないモジュールに対して利用することはできません。

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

  モジュールを読み込み、クラス名からクラス記述オブジェクトにマップする辞書を返します。パラメタ module はモジュール名を表す文字列でなくてはなりません; パッケージ内のモジュール名でもかまいません。path パラメタはシーケンス型でなくてはならず、モジュールのソースコードがある場所を特定する際に `sys.path` の値に加えて使われます。

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

  `readmodule()` に似ていますが、返される辞書は、クラス名からクラス記述オブジェクトへの対応付けに加えて、トップレベル関数から関数記述オブジェクトへの対応付けも行っています。さらに、読み出し対象のモジュールがパッケージである場合、返される辞書はキー `'__path__'` を持ち、その値はパッケージの検索パスが入ったリストになります。

## 32.9.1. クラスオブジェクト

`Class` オブジェクトは、 `readmodule()` や `readmodule_ex()` が返す辞書の値として使われており、以下のデータ属性を提供しています:

`Class.``module`

  クラス記述オブジェクトが記述している対象のクラスを定義しているモジュールの名前です。

`Class.``name`

  クラスの名前です。

`Class.``super`

  記述しようとしている対象クラスの、直接の基底クラス群について記述している `Class` オブジェクトのリストです。スーパクラスとして挙げられているが `readmodule()` が見つけられなかったクラスは、 `Class` オブジェクトではなくクラス名の文字列としてリストに挙げられます。

`Class.``methods`

  メソッド名を行番号に対応付ける辞書です。

`Class.``file`

  クラスを定義している `class` 文が入っているファイルの名前です。

`Class.``lineno`

  `file` で指定されたファイルにおける `class` 文の行番号です。

## 32.9.2. Function オブジェクト

`Function` オブジェクトは、 `readmodule_ex()` が返す辞書内でキーに対応する値として使われており、以下のデータ属性を提供しています:

`Function.``module`

  関数記述オブジェクトが記述している対象の関数を定義しているモジュールの名前です。

`Function.``name`

  関数の名前です。

`Function.``file`

  関数を定義してる `def` 文が入っているファイルの名前です。

`Function.``lineno`

  `file` で指定されたファイルにおける `def` 文の行番号です。