pyclbr — Pythonモジュールブラウザのサポート—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/3.10/library/pyclbr
移動先:案内検索

pyclbr —Pythonモジュールブラウザーのサポート

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



pyclbr モジュールは、Pythonでコード化されたモジュールで定義された関数、クラス、およびメソッドに関する限られた情報を提供します。 この情報は、モジュールブラウザを実装するのに十分です。 情報はモジュールをインポートするのではなくPythonソースコードから抽出されるため、このモジュールは信頼できないコードで安全に使用できます。 この制限により、すべての標準およびオプションの拡張モジュールを含む、Pythonで実装されていないモジュールでこのモジュールを使用することはできません。

pyclbr.readmodule(module, path=None)

モジュールレベルのクラス名をクラス記述子にマッピングするディクショナリを返します。 可能であれば、インポートされた基本クラスの記述子が含まれます。 パラメータ module は、読み取るモジュールの名前を含む文字列です。 パッケージ内のモジュールの名前である可能性があります。 指定した場合、 path は、sys.pathの前に付けられた一連のディレクトリパスであり、モジュールのソースコードを見つけるために使用されます。

この関数は元のインターフェースであり、下位互換性のためにのみ保持されています。 以下のフィルタリングされたバージョンを返します。

pyclbr.readmodule_ex(module, path=None)
defまたはclassステートメントを使用して、モジュールで定義された各関数およびクラスの関数またはクラス記述子を含む辞書ベースのツリーを返します。 返されたディクショナリは、モジュールレベルの関数名とクラス名をそれらの記述子にマップします。 ネストされたオブジェクトは、親の子ディクショナリに入力されます。 readmoduleと同様に、 module は読み取るモジュールに名前を付け、 path はsys.pathの前に付加されます。 読み取られているモジュールがパッケージの場合、返される辞書にはキー'__path__'があり、その値はパッケージ検索パスを含むリストです。

バージョン3.7の新機能:ネストされた定義の記述子。 それらは、新しい子属性を介してアクセスされます。 それぞれに新しい親属性があります。


これらの関数によって返される記述子は、FunctionクラスとClassクラスのインスタンスです。 ユーザーは、これらのクラスのインスタンスを作成することは期待されていません。

関数オブジェクト

クラスFunctionインスタンスは、defステートメントで定義された関数を記述します。 それらには次の属性があります。

Function.file
関数が定義されているファイルの名前。
Function.module
説明されている機能を定義するモジュールの名前。
Function.name
関数の名前。
Function.lineno
定義が始まるファイルの行番号。
Function.parent

トップレベル関数の場合、なし。 入れ子関数の場合、親。

バージョン3.7の新機能。

Function.children

ネストされた関数およびクラスの記述子に名前をマッピングする辞書。

バージョン3.7の新機能。

Function.is_async

asyncプレフィックスで定義されている関数の場合はTrue、それ以外の場合はFalse

バージョン3.10の新機能。


クラスオブジェクト

クラスClassインスタンスは、クラスステートメントによって定義されたクラスを記述します。 これらは、関数と同じ属性とさらに2つの属性を持っています。

Class.file
クラスが定義されているファイルの名前。
Class.module
記述されたクラスを定義するモジュールの名前。
Class.name
クラスの名前。
Class.lineno
定義が始まるファイルの行番号。
Class.parent

トップレベルクラスの場合、なし。 ネストされたクラスの場合、親。

バージョン3.7の新機能。

Class.children

ネストされた関数およびクラスの記述子に名前をマッピングする辞書。

バージョン3.7の新機能。

Class.super
記述されているクラスの直接の基本クラスを記述しているClassオブジェクトのリスト。 スーパークラスとして名前が付けられているが、 readmodule_ex()で検出できないクラスは、Classオブジェクトではなく、クラス名の文字列としてリストされます。
Class.methods
メソッド名を行番号にマッピングする辞書。 これは、新しい子辞書から導出できますが、下位互換性のために残されています。