Pythonで属性表示を作ってみた

「dir()」って便利なものがあるんでオブジェクトやインスタンスを渡すと、それ自身が持っている属性と簡単な説明を表示するスクリプトを作ってみた。まあ〜初めてにしてはよくやったんでないの、と思っている。

#!/usr/bin/env python
# -*- coding: utf-8 -*-

def info(object):
  """
  method infomation module
  >>> from infomation import info
  >>> info(module_name)
  """
  for method in dir(object):
    if callable(getattr(object, method)):
      print("%s : %s" % (str(method.ljust(20)), str(getattr(object, method).__doc__)))

if __name__ == '__main__':
  print(info.__doc__)

実はこれ、「Dive Into Python」で紹介されている「apihelper.py」をめっちゃ簡単にしたやつ。こんな素晴らしい本を公開されているってのは凄いですね。感謝です。

動作はこんな感じ〜

>>> from infomation import info
>>> li = []
>>> info(li)
__add__              : x.__add__(y) <==> x+y
__class__            : list() -> new list
list(sequence) -> new list initialized from sequence's items
__contains__         : x.__contains__(y) <==> y in x
__delattr__          : x.__delattr__('name') <==> del x.name
__delitem__          : x.__delitem__(y) <==> del x[y]
__delslice__         : x.__delslice__(i, j) <==> del x[i:j]

               Use of negative indices is not supported.
__eq__               : x.__eq__(y) <==> x==y
__ge__               : x.__ge__(y) <==> x>=y
__getattribute__     : x.__getattribute__('name') <==> x.name
__getitem__          : x.__getitem__(y) <==> x[y]
__getslice__         : x.__getslice__(i, j) <==> x[i:j]

               Use of negative indices is not supported.
__gt__               : x.__gt__(y) <==> x>y

   ...

いろいろ勉強になるよね。Pythonって面白いよ。