Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 具有类和对象自动完成功能的自定义交互式终端(CLI)_Python_Python Interactive_Interactive Shell - Fatal编程技术网

Python 具有类和对象自动完成功能的自定义交互式终端(CLI)

Python 具有类和对象自动完成功能的自定义交互式终端(CLI),python,python-interactive,interactive-shell,Python,Python Interactive,Interactive Shell,我希望在程序中有一个类似IPython的交互式提示 我想要的功能包括: 自定义提示 自动完成对象的方法和属性 方法、读/写属性的执行 错误时显示docstring 到目前为止,我一直在使用带有自动完成回调函数的readline和一些神奇的方法,如\uuuuuuuuuuuuuuuuuuuu、\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu文档或 我相信我可以实现这样的解决方案,但我正在寻找一个现有的模块,可以为我做的工作 在我看来,

我希望在程序中有一个类似IPython的交互式提示

我想要的功能包括:

  • 自定义提示
  • 自动完成对象的方法和属性
  • 方法、读/写属性的执行
  • 错误时显示docstring
到目前为止,我一直在使用带有自动完成回调函数的
readline
和一些神奇的方法,如
\uuuuuuuuuuuuuuuuuuuu
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu文档

我相信我可以实现这样的解决方案,但我正在寻找一个现有的模块,可以为我做的工作

在我看来,我想这样使用它:

class Foo:
    def Say(self): 
        return "The answer is 42"
foo = Foo()

cli = Cli() # The terminal interface I want to have
cli.RegisterObject(foo, showAttributes = True, showProtected = True)
cli.AddCommand('exit', exit)
cli.Start(defaultPrompt = ">")
$ ./cli.py
>foo.<tab>
Say
>foo.Say()
The answer is 42
>bar.AreYouHere()
Unknown command!
>exit
一位朋友建议我使用IPython而不是定制解决方案。不幸的是,IPython对我的应用程序太开放了,新手肯定会感到困惑。我不希望最终用户可以访问所有内容

最后,我们将有如下内容:

class Foo:
    def Say(self): 
        return "The answer is 42"
foo = Foo()

cli = Cli() # The terminal interface I want to have
cli.RegisterObject(foo, showAttributes = True, showProtected = True)
cli.AddCommand('exit', exit)
cli.Start(defaultPrompt = ">")
$ ./cli.py
>foo.<tab>
Say
>foo.Say()
The answer is 42
>bar.AreYouHere()
Unknown command!
>exit
$。/cli.py
>福。
说
>foo.Say()
答案是42
>你在吗
未知命令!
>出口
一些相关问题包括:

不幸的是,答案建议使用我不太需要的模块。

。比制作像IPython这样的东西要好,因为它就是IPython

启动IPython会话至少包括:

from IPython import embed
embed()

中有许多附加配置选项(包括示例)。比制作像IPython这样的东西要好,因为它就是IPython.:-)这是一个真实的答案