我正在尝试使用支持 2 种或更多模式的 Python Cmd 类构建 CLI(面向行的命令解释器),每种模式都有不同的命令集,并带有在它们之间切换的命令。
目前,我为每种模式使用 2 个单独的类实现了 2 种模式,然后我将下一个类设置为在状态变量中执行:
class OpMode(Cmd):
def do_show(self, line):
:
def do_configure(self, line): # switch to ConfigMode
ctx.state = 'config'
return True
class ConfigMode(Cmd):
def do_set(self, line):
:
def do_exit(self, line): # go back to OpMode
ctx.state = 'op'
return True
# in main ...
while 1:
if ctx.state == 'op':
opcli.cmdloop()
elif ctx.state == 'conf':
confcli.cmdloop()
else:
break
有没有办法用一个 Cmd 类来实现同样的事情?