この単純なコードを次のように実行しようとしています:
- パイソン 2.7.2
- ウィンドウズ7
pipからインストールされたpyreadline
class HelloWorld(cmd.Cmd): """Simple command processor example.""" FRIENDS = [ 'Alice', 'Adam', 'Barbara', 'Bob', 'Chris' ] def do_greet(self, person): "Greet the person" if person and person in self.FRIENDS: greeting = 'hi, %s!' % person elif person: greeting = "hello, " + person else: greeting = 'hello' print greeting def complete_greet(self, text, line, begidx, endidx): if not text: completions = self.FRIENDS[:] else: completions = [ f for f in self.FRIENDS if f.startswith(text) ] return completions def do_EOF(self, line): return True if __name__ == '__main__': HelloWorld().cmdloop()
オートコンプリートが機能していないようです。それを実行して次のように入力すると:
(Cmd) greet A<tab>
オートコンプリートの提案はありませんが、「Alice Adam」が表示されるはずです。
ただし、入力すると:
(Cmd) greet C<tab>
「Chris」で正しくオートコンプリートされます。したがって、オートコンプリートに複数の一致があるかどうかに関連しているようです。
誰かが説明を持っているか、これを修正する方法を知っていますか?
ありがとう!
編集:残りのフレーズを削除しました。