1

cmd現在、Python のモジュールを使用してコマンド ベースのゲームを作成しています。

ある時点で、cmd.Cmdオブジェクトがネストされます。コマンド プロンプトを実行していると言うとA、ある時点でB内に新しいプロンプトが作成されAます。終了したら、特定の値を再度B返したいと思います。A私のすべての試行は、内部コマンドプロンプトが返されて終了しましたNonecmd.Cmdこの状況をよりよく理解するために、質問を単純化し、オブジェクトから戻り値を取得しようとしました。これは私が持っているものです:

import cmd
class Test(cmd.Cmd):
    def __init__(self, value):
        cmd.Cmd.__init__(self)
        self.value = value
    def do_bye(self, s):
        return True
    def postloop(self):
        print("Entered the postloop!")
        return self.value

そして、私がすでに試したシェルで:

a = Test("bla bla")
print(a.cmdloop())
# after the "bye" command it prints None

print(Test("bla bla").cmdloop())
# after the "bye" command it ALSO prints None

a = Test("safsfa").cmdloop()
print(a)
# Also prints None

cmd.Cmdオブジェクトに値を返させることができないようです。どうすればそれを行うことができますか、それとも私が知らない何らかの理由で不可能ですか?

4

1 に答える 1

1

のスーパークラスのバージョンを呼び出した後、サブクラスで再定義cmdloop()して特定の値を返すことができcmdloop()ます。

class Test(cmd.Cmd):
    # ...
    def cmdloop(self):
        cmd.Cmd.cmdloop(self)
        return self.value
于 2014-06-15T01:29:41.357 に答える