2009-07-02

pyclbr

PyMOTW で pyclbr モジュールが紹介されていました。クラスブラウザを実装するのに便利なモジュールです。



たとえばこんなコードがあったとしましょう。


# foo.py
class Foo:
    def hello(self):
        print("hello")
    def bye(self, person):
        print("Bye,", person)
class Bar(Foo):
    def hello(self):
        pass
    def go(self):
        print()


で、pyclbr はこんな風に使います。


# browse.py
import pyclbr
for name, classinfo in pyclbr.readmodule("foo").items():
    print(name)
    for method in classinfo.methods.items():
        print(method)
    print()


実行結果はこんな感じ。


Foo
('bye', 4)
('hello', 2)

Bar
('go', 9)
('hello', 7)


Bar.bye() は表示されません。スーパークラスのメソッドは、明示的に取らないといけないようです。



テストシーケンス管理ツール TestStand 4.2 から Python に対応しています。実行時に関数やメソッドを指定して呼び出せるはずです。おそらく、このモジュールを使っているんだろうなあと思います。未確認ですが。