1

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

4

1 に答える 1

1

単一の cmd インスタンスを使用しても、コードは改善されません。Cmd クラス内で状態を追跡し、コマンド アクションごとにそれに応じて応答を調整できます。

ただし、おそらく必要なのは、異なる状態間のより明確な遷移です。これは次のように行うことができます。

def do_configure(self, line):
    config = ConfigMode(...)
    config.cmdloop()
于 2013-08-28T10:02:29.110 に答える