Pythonの迷子オブジェクトのメンバ変数と関数を確認するよ
迷子のオブジェクト…もとい何らかのライブラリやらによって生成されるオブジェクトにどんなメンバがいるかもわからないという時に、それらを調べる方法をまとめておきます。
普通このような状況では、ライブラリのリファレンスを確認するのが一番なのですが、現在自分が使い始めたライブラリではリファレンスがまったく充実していないのでわからないことが多すぎるので、自分で調べようと思います。
また、リファレンスがないならコードを見ればいいのですが、なんだかこのライブラリ書き方が汚くて読みたくないです。はい。
※名誉のためなんのライブラリかは伏せます。
OS : Ubuntu 16.04 LTS
Python : 3.5.2
Contents
1. メンバ変数を調べる
では、さっそく調べていきます。と言っても調べるためのコードを載せて終わりなんですけどね。というわけでメンバ変数を調べるためのコードは以下のとおりです。
1 2 3 4 5 6 7 |
#coding:utf-8 import time obj = time #調べたいオブジェクト vars = obj.__dict__.keys() for v in vars: print(v) |
今回のコードでは、テストのために”time”というモジュールをオブジェクトとして渡すことで、メンバ変数を確認していますが、実際に確認したいときは、objに代入するtimeの部分をみなさんの調べたいものに置き換えてください。
2. メンバ関数を調べる
では、次にメンバ関数を調べます。というわけでコードは以下の通り。
1 2 3 4 5 6 7 8 |
#coding:utf-8 import inspect import time obj = time functions = inspect.getmembers(obj) for f in functions: print(f) |
今回もtimeのモジュールを対象に調べています。調べるために使用しているのが、inspectモジュールです。一応これを使わない方法もあるようですが、こちらのほうがお手軽にできそうだったのでこちらを採用しました。このinspect内のgetmembersという関数を使用することでメンバ関数の一覧を取得することができます。
おわりに
そんな感じで今回はメンバ変数と関数を調べました。理想としてはリファレンスや、コード内のコメントなどで一目瞭然の状態ならまったく必要のない記事なのですが、将来なにが起こるかわからないので一応まとめておきました。