次のソリューションでは、エイリアス化されたコマンドが 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)