次のソリューションでは、エイリアス化されたコマンドが 1 つのヘルプ メッセージを共有します。これにより、すべてのエイリアスを編集しやすい 1 つの場所に保持できると同時に、文書化がはるかに簡単になります。関数値を使用してエイリアス ディクショナリに対してユーザー入力をチェックし、 default()
( sloth & brianを参照) メソッドとメソッドの両方をオーバーライドしますdo_help()
。
ここではエイリアス'c'
を作成し、'con'
execute do_constraint()
、'q'
invoke do_quit()
、および'h'
invoke を作成しましdo_help()
た。このソリューションのボーナスは、同じメッセージを出力することです'h q'
。'help quit'
複数のエイリアス コマンドのドキュメントは、単一のドキュメント文字列で管理できます。
import cmd
class prompt(cmd.Cmd):
def __init__(self):
cmd.Cmd.__init__(self)
self.aliases = { 'c' : self.do_constraint ,
'con' : self.do_constraint ,
'q' : self.do_quit ,
'h' : self.do_help }
def do_constraint(self, arg):
'''Constrain things.'''
print('Constraint complete.')
def do_quit(self, arg):
'''Exit the program.'''
return True
def do_help(self, arg):
'''List available commands.'''
if arg in self.aliases:
arg = self.aliases[arg].__name__[3:]
cmd.Cmd.do_help(self, arg)
def default(self, line):
cmd, arg, line = self.parseline(line)
if cmd in self.aliases:
self.aliases[cmd](arg)
else:
print("*** Unknown syntax: %s" % line)