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の新機能。
クラスオブジェクト
クラス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
- メソッド名を行番号にマッピングする辞書。 これは、新しい子辞書から導出できますが、下位互換性のために残されています。