Python使用泛型类型提示时如何让Visual Studio Code提供智能提示
问题根因
你当前的代码仅在__init__参数中使用了泛型类型T,但没有将FooBar声明为泛型类,类型检查器无法将实例化时传入的参数类型,和FooBar实例的its_t属性做类型绑定,因此VS Code的智能提示无法识别its_t的实际类型。
修正代码
你需要导入Generic并让FooBar继承Generic[T],完成泛型类的声明:
from typing import TypeVar, Generic T = TypeVar('T') # Example class for a possible type T class MyT: # 补充实例方法必填的self参数 def name(self): return "I'm T" # 声明FooBar为泛型类,绑定泛型参数T class FooBar(Generic[T]): def __init__(self, something: T) -> None: self.its_t = something foo_bar = FooBar(MyT()) intellisense_test = foo_bar.its_t # 此时输入intellisense_test. 即可触发name方法的智能提示
VS Code配置要求
要确保智能提示正常工作,你需要完成以下配置:
- 安装官方的Pylance扩展,这是微软官方推出的Python语言服务引擎,智能提示能力远优于默认旧引擎
- 在VS Code设置中将
python.languageServer配置项的值设为Pylance - 可选:将
python.analysis.typeCheckingMode设为basic或strict,可以获得更严格的类型检查和更准确的补全提示
内容的提问来源于stack exchange,提问作者Klamsi
相关产品推荐
相关产品推荐

