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 クラスで同じことを達成する方法はありますか?