インスタンスを指定するとメソッドと引数の一覧を出力する関数

ドキュメントがないオブジェクトにぶち当たったので,書いてみた.
誰かが書いているかもしれないけれど,まぁ,練習になるからよし.

def getLongestKeyName(dic):
    longest = ""
    for i in (dic.keys()):
        if(len(i) > len(longest)):
            longest = i
    return longest

def formatDictionary(dic):
    keyfieldlength = len(getLongestKeyName(dic))
    format = ""
    for i in(dic.keys()):
        offset = keyfieldlength - len(i)
        keyfield = ""
        for j in (range(offset)):
            keyfield += " "
        format += " %(o)s%(k)s |%(v)s\n" % {'o': keyfield, 'k':i, 'v':dic[i]}
    return format

def printMethodInformation(instance):
    methods = {}

    for i in(inspect.getmembers(instance, inspect.ismethod)):
        argnames = "(";
        argspec = inspect.getargspec(i[1])
        for j in (argspec[0]):
            if(j == "self"):
                continue
            else:
                if(argnames == "("):
                    argnames = argnames + j
                else:
                    argnames = argnames + "," + j
        argnames = argnames + ")"
        methods[i[0]] = argnames

    print formatDictionary(methods)

まぁ,なんといい加減なんでしょう.辞書かどうかを判定していないし.
表を作るところとか,もっとかっこいい書き方があるはず…

実行結果はこんな感じ.

 getDenominator |()
   getNumerator |()
       __init__ |(numerator,denominator)
         format |()