トップページに戻る

python tips: classの解析

 pythonの文法、関数、ライブラリ、classの使用方法を知るためには、マニュアルを調べることが最善ですが、それでは十分でない場合の手順を説明します。

  1. ChatGPT、Copilotなどでソースコードを提案してもらう
  2. ネットで検索する。Quora、Qiitaなどの知恵袋系ではプログラム関係の情報が強い
  3. マニュアル (オンラインマニュアル)を調べる
  4. ソースコードを調べる。githubなどで公開されている場合、classや関数単位で検索できます
  5. インスタンスをprint()すると、インスタンスの内容の要約を出力してくれる場合があります。
    その場合、ソースコードのclass定義で、
    def __str__(self):
    を調べると、要約をどのように作っているかを確認できます

以上で解決しない場合、

  1. classインスタンスに .__dict__ メンバ変数があるかどうか確認する。
    この辞書型メンバには、classのメンバ変数、メンバ関数 (attribute) が格納されています。
  2. classのattributeは dir() で受け取れます。インスタンス obj からclassを取得するには、obj.__class__を使います。
    ・ classのメンバ関数は dir() で受け取ったのち、callable() で関数かどうかを確認します。
    ・ callable()でないattributeがメンバ変数になります。

以上のattributeは、以下の関数にインスタンスを渡すことで取得できます

def get_attributes(obj):
    return dir(obj.__class__)

def get_member_functions(obj):
    class_type = obj.__class__
    return [method for method in dir(class_type) if callable(getattr(class_type, method))]

def get_member_variables(obj):
    class_type = obj.__class__
    return [method for method in dir(class_type) if not callable(getattr(class_type, method))]

def get_dict(obj):
    return obj.__dict__