Python函数用list[str]类型注解报'type' object is not subscriptable错如何解决
报错原因
你当前运行代码的Python版本低于3.9。Python从3.9版本开始才支持直接使用list[str]这种内置类型加下标泛型的标注语法,3.9之前的版本中list是原生类型对象,不支持[]下标操作传入泛型参数,因此会触发该类型错误。
解决方案
你可以根据自己的运行环境选择任意一种适配方案:
- 方案一:升级Python版本到3.9及以上,原有代码不需要做任何修改即可正常运行。
- 方案二:兼容3.9以下版本,使用
typing模块的泛型类型。在代码头部添加导入语句:
再将函数头的类型标注修改为大写开头的泛型类型:from typing import Listdef choose(self, options: List[str]) -> str: - 方案三:如果使用的是Python 3.7/3.8版本,可以直接在代码最顶部添加以下语句,不需要修改原类型标注:
该语句会让Python延后解析类型标注,运行阶段不会对标注语法做校验,也就不会触发报错。from __future__ import annotations
内容的提问来源于stack exchange,提问作者Ansar Al
相关产品推荐
相关产品推荐

