IDEPython自动完成
我有以下代码: (请注意,以下代码是实际代码的缩减) 如您所见,我有两个API—第一个定义foo函数,第二个定义bar函数。A&B实现foo,C&D实现bar 除此之外,我还有一个包装类,它可以获取对象列表,列表只能包含一个API实现,这意味着它只能获取A&B或C&D。它永远不会获取A&C A&D B&D 包装器类实现“get\u current\u object”函数,该函数返回该API的一个实现 我正在使用emacs(spacemacs)进行python开发(还尝试使用vscode解决我的特定问题)。问题是,当我使用“get\u currect\u object”时,我没有正确的自动完成IDEPython自动完成,python,visual-studio-code,emacs,autocomplete,wrapper,Python,Visual Studio Code,Emacs,Autocomplete,Wrapper,我有以下代码: (请注意,以下代码是实际代码的缩减) 如您所见,我有两个API—第一个定义foo函数,第二个定义bar函数。A&B实现foo,C&D实现bar 除此之外,我还有一个包装类,它可以获取对象列表,列表只能包含一个API实现,这意味着它只能获取A&B或C&D。它永远不会获取A&C A&D B&D 包装器类实现“get\u current\u object”函数,该函数返回该API的一个实现 我正在使用emacs(spacemacs)进行python开发(还尝试使用vscode解决我的特
first_wrapper.get_current_object().foo()
second_wrapper.get_current_object().bar()
在这个例子中,我的IDE无法完成foo或bar。我意识到IDE没有可能知道is应该完成foo或bar,因为这样做的唯一方法是运行代码(IDE不是这样做,而是解析模块)。我也尝试过重写dir,但是IDE没有使用该函数,只有ipython使用它
同样,该代码是真实代码的简化。我意识到这段代码有点奇怪,真正的代码对代码设计有更好的解释,遗憾的是我不能把它放在这里,因为它太大了
有没有办法告诉IDE返回的值可以是foo或bar 如果您将emacs与
anaconda模式
和company anaconda
一起使用,那么您将在源缓冲区中获得预期的完成(一旦您在REPL中评估了代码)
first_wrapper.get_current_object().foo()
second_wrapper.get_current_object().bar()