##
3.11.1 型とメンバ

`getmembers()`は、クラスやモジュールなどのオブジェクトからメンバを取得します。 名前が``is''で始まる 11 個の関数は、`getmembers()`の2番目の引数として利用する事ができますし、以下のような特殊属性を参照できるかどうか調べる時にも使えます。

Type | Attribute | Description | Notes
--- | --- | --- | ---
module | __doc__ | ドキュメント文字列 |
| __file__ | ファイル名(組み込みモジュールには存在しない |
class | __doc__ | ドキュメント文字列 |
| __module__ | クラスを定義しているモジュールの名前 |
method | __doc__ | ドキュメント文字列 |
| __name__ | メソッドが定義された時の名前 |
| im_class | メソッドを呼び出すために必要なクラスオブジェクト | (1)
| im_func | メソッドを実装している関数オブジェクト |
| im_self | メソッドに結合しているインスタンス、または`None` |
function | __doc__ | ドキュメント文字列 |
| __name__ | 関数が定義された時の名前 |
| func_code | 関数をコンパイルしたバイトコードを格納するコード オブジェクト |
| func_defaults | 引数のデフォルト値のタプル |
| func_doc | (__doc__と同じ) |
| func_globals | 関数を定義した時のグローバル名前空間 |
| func_name | (__name__と同じ) |
traceback | tb_frame | このレベルのフレームオブジェクト |
| tb_lasti | 最後に実行しようとしたバイトコード中のインストラク ションを示すインデックス。 |
| tb_lineno | 現在のPythonソースコードの行番号 |
| tb_next | このオブジェクトの内側(このレベルから呼び出された) のトレースバックオブジェクト |
frame | f_back | 外側 (このフレームを呼び出した)のフレームオブジ ェクト |
| f_builtins | このフレームで参照している組み込み名前空間 |
| f_code | このフレームで実行しているコードオブジェクト |
| f_exc_traceback | このフレームで例外が発生した場合にはトレー スバックオブジェクト。それ以外なら`None` |
| f_exc_type | このフレームで例外が発生した場合には例外型。それ 以外なら`None` |
| f_exc_value | このフレームで例外が発生した場合には例外の値。 それ以外なら`None` |
| f_globals | このフレームで参照しているグローバル名前空間 |
| f_lasti | 最後に実行しようとしたバイトコードのインデックス。 |
| f_lineno | 現在のPythonソースコードの行番号 |
| f_locals | このフレームで参照しているローカル名前空間 |
| f_restricted | 制限実行モードなら1、それ以外なら0 |
| f_trace | このフレームのトレース関数、または`None` |
code | co_argcount | 引数の数(*、**引数は含まない) |
| co_code | コンパイルされたバイトコードそのままの文字列 |
| co_consts | バイトコード中で使用している定数のタプル |
| co_filename | コードオブジェクトを生成したファイルのファイル名 |
| co_firstlineno | Pythonソースコードの先頭行 |
| co_flags | 以下の値の組み合わせ: 1=optimized `|` 2=newlocals `|` 4=*arg `|` 8=**arg |
| co_lnotab | 文字列にエンコードした、行番号->バイトコード インデックスへの変換表 |
| co_name | コードオブジェクトが定義されたときの名前 |
| co_names | ローカル変数名のタプル |
| co_nlocals | ローカル変数の数 |
| co_stacksize | 必要な仮想機械のスタックスペース |
| co_varnames | 引数名とローカル変数名のタプル |
builtin | __doc__ | ドキュメント文字列 |
| __name__ | 関数、メソッドの元々の名前 |
| __self__ | メソッドが結合しているインスタンス、または`None` |

Note:

(1)
  バージョン2.2 以降で変更された 仕様: `im_class` 従来、メソッドを定義しているクラスを参 照するために使用していた

`getmembers`( | object[, predicate])

  オブジェクトの全メンバを、(名前, 値)の組み合わせのリストで返します。リ ストはメンバ名でソートされています。predicateが指定されている場 合、predicateの戻り値が真となる値のみを返します。

`getmoduleinfo`( | path)

  pathで指定したファイルがモジュールであればそのモジュールがPython でどのように解釈されるかを示す`(name, suffix, mode, mtype)`のタプルを返し、モジュールでなければ `None`を返します。nameはパッケージ名を含まないモジュール 名、suffixはファイル名からモジュール名を除いた残りの部分(ドット による拡張子とは限らない)、modeは`open()`で指定されるフ ァイルモード(`'r'`または`'rb'`)、mtypeは `imp`で定義している整定数のいずれかが指定されます。モジュール タイプに付いては`imp`を参照してください。

`getmodulename`( | path)

  pathで指定したファイルの、パッケージ名を含まないモジュール名を返 します。この処理は、インタープリタがモジュールを検索する時と同じアルゴ リズムで行われます。ファイルがこのアルゴリズムで見つからない場合には `None`が返ります。

`ismodule`( | object)

  オブジェクトがモジュールの場合は真を返します。

`isclass`( | object)

  オブジェクトがクラスの場合は真を返します。

`ismethod`( | object)

  オブジェクトがメソッドの場合は真を返します。

`isfunction`( | object)

  オブジェクトがPythonの関数、または無名(lambda)関数の場合は真を返します。

`istraceback`( | object)

  オブジェクトがトレースバックの場合は真を返します。

`isframe`( | object)

  オブジェクトがフレームの場合は真を返します。

`iscode`( | object)

  オブジェクトがコードの場合は真を返します。

`isbuiltin`( | object)

  オブジェクトが組み込み関数の場合は真を返します。

`isroutine`( | object)

  オブジェクトがユーザ定義か組み込みの関数・メソッドの場合は真を返します。

`ismethoddescriptor`( | object)

  オブジェクトがメソッドデスクリプタの場合に真を返しますが、 ismethod()、isclass() または isfunction() が真の場合には真を返しません。

  この機能は Python 2.2 から新たに追加されたもので、例えば int.__add__ は真 になります。 このテストをパスするオブジェクトは __get__ 属性を持ちますが __set__ 属性を持ちません。しかしそれ以上に属性のセットには様々なものがあります。 __name__ は通常見分けることが可能ですし、__doc__ も時には可能です。

  デスクリプタを使って実装されたメソッドで、上記のいずれかのテストもパスして いるものは、 ismethoddescriptor() では偽を返します。これは単に 他のテストの方がもっと確実だからです - 例えば、ismethod() をパス したオブジェクトは im_func 属性 (など) を持っていると期待できます。

`isdatadescriptor`( | object)

  オブジェクトがデータデスクリプタの場合に真を返します。

  データデスクリプタは __get__ および __set__ 属性の両方を持ちます。 データデスクリプタの例は (Python 上で定義された) プロパティや (C で定義された) getset やメンバです。通常、データデスクリプタは __name__ や __doc__ 属性を持ちます (プロパティ、 getset 、メンバは両方の属性を持っています) が、保証されているわけではありません。 バージョン2.3 以降で新規追加された 仕様です。