在 vscode python 中输入特定的自动完成功能

问题描述 投票:0回答:1

假设我正确输入了我的 python 代码,有没有一种方法或扩展可以让 vscode 只提供适合该参数的自动完成选项?

例如:

from enum import IntEnum

class MyEnum(IntEnum):
    OneThing = 1
    Another = 2
    EvenMore = 3


def my_function(parameter : MyEnum):
    print(parameter)

现在,当我开始编写代码时,我输入...

my_function(

它完成了

()
并提供了需要去那里的类型的信息。

我希望我能够开始输入

One
并让它在建议中包含 MyEnum.OneThing

如果我在顶部范围创建一个变量,例如...

MyEnum_OneThing = MyEnum.OneThing

然后我可以打字

my_function(One
,它会自动完成
)
并建议
MyEnum_OneThing

有没有办法让它提出建议

MyEnum.OneThing
? 我们有一些具有数百个枚举值的对象,我们希望自动完成/智能感知更有帮助。

(或者,我想,替代解决方案是一种自动化 MyEnum_=MyEnum 的方法。 以便具有 100 个项目的枚举最终位于顶级范围,以便智能感知将其拾取。

python visual-studio-code autocomplete
1个回答
0
投票

确保您的函数具有类型提示和详细的文档字符串:

from enum import IntEnum

class MyEnum(IntEnum):
    OneThing = 1
    Another = 2
    EvenMore = 3

def my_function(parameter: MyEnum):
    """
    Function that does something with MyEnum.

    :param parameter: Enum of type MyEnum
    """
    print(parameter)

然后在 VS Code 中创建自定义代码段:

  • 转到文件 > 首选项 > 用户片段。
  • 选择 python.json (或创建一个新的全局代码片段文件)。
  • 添加片段:
{
    "MyEnum Snippet": {
        "prefix": "MyEnum.",
        "body": [
            "MyEnum.${1|OneThing,Another,EvenMore|}"
        ],
        "description": "Autocomplete for MyEnum members"
    }
}

最后,您可以编写一个脚本来为

enum
成员创建变量:

from enum import IntEnum

class MyEnum(IntEnum):
    OneThing = 1
    Another = 2
    EvenMore = 3

globals().update({f"MyEnum_{member.name}": member for member in MyEnum})

def my_function(parameter: MyEnum):
    print(parameter)

通过这种方式,您将拥有每个

enum
成员的顶级变量,这些变量将被 IntelliSense 拾取。

© www.soinside.com 2019 - 2024. All rights reserved.