You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 15:33:17