Python类型错误:str无法赋值给type[str]问题求助
解决Python类型标注错误:"str"无法赋值给"type[str]"
错误原因
你写的current = [str]不是在做类型标注,而是创建了一个包含str类型本身的列表。此时这个列表的元素类型是type[str](即str这个类对象),而非你期望的str类型实例(具体字符串)。当你调用current.count(e2)时,e2是字符串实例,和列表中存储的类型对象类型不匹配,因此触发类型错误。
同样,countList = [int]也存在相同问题:它创建的是包含int类型的列表,而非存储整数的列表。
正确的类型标注方式
要给变量添加类型提示,需遵循变量名: 类型 = 初始值的语法。对于字符串列表,根据Python版本选择写法:
- Python 3.8及以下:需要从
typing模块导入List - Python 3.9+:可直接使用内置的
list[str]语法
修正后的代码片段:
from typing import List # Python 3.8及以下需要此导入 def lengthOfLongestSubstring(self, s: str) -> int: stringList = list(s) countList: List[int] = [] # 标注为存储整数的列表 current: List[str] = [] # 标注为存储字符串的列表 actualCounting = 1 for e1 in stringList: current.append(e1) for e2 in stringList: if not current.count(e2): actualCounting += 1 current.append(e2) else: countList.append(actualCounting) actualCounting = 1 # 补充返回逻辑示例: # return max(countList) if countList else 0
关于type[str]的说明
type[str]表示的是**str这个类型本身**,而非str类型的具体实例。你原本的代码中,current = [str]把str类放进了列表,所以类型检查工具判定current的元素类型是type[str],当传入具体字符串时自然会报类型不匹配。
内容的提问来源于stack exchange,提问作者Gabriel Monteiro Silva
相关产品推荐
相关产品推荐

