以下解决方案使别名命令共享单个帮助消息。它使您可以将所有别名保存在一个易于编辑的位置,同时使文档变得更加容易。它根据具有函数值的别名字典检查用户输入,并覆盖default()
(参见树懒和布莱恩)和do_help()
方法。
在这里,我创建了别名'c'
并'con'
执行do_constraint()
、'q'
调用do_quit()
和'h'
调用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)