インスタンスを指定するとメソッドと引数の一覧を出力する関数
ドキュメントがないオブジェクトにぶち当たったので,書いてみた.
誰かが書いているかもしれないけれど,まぁ,練習になるからよし.
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 |()