cmdを使えばコマンドラインのツールを簡単に作れる
コマンドループは
line = self.precmd(line) stop = self.onecmd(line) stop = self.postcmd(stop, line)
となっているのでpre,postのフックが効く。onecmdのほうはdo_をつけたメソッドを呼び出している。
cmd, arg, line = self.parseline(line) if cmd == '': return self.default(line) else: try: func = getattr(self, 'do_' + cmd) except AttributeError: return self.default(line) return func(arg)
getattrでメソッドを呼び出して、引数与えて実行した結果を返している。動的にメソッドの適用したい場合にはこうやればいいのか。