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

如何修复Pyright提示的‘Expected 0 positional arguments’类型注解报错

问题修复方案

报错原因

Pyright提示「Expected 0 positional arguments」(期望0个位置参数),是因为Type[T]仅表示该参数是能生成T实例的类,但并未约束这个类的构造函数支持接收一个字符串参数。调用out(inp)时,Pyright无法确认目标类是否兼容这种传参方式,因此抛出错误。

修复代码

from typing import Type, Optional, Protocol

class StrConstructible(Protocol):
    def __init__(self, s: str) -> None:
        ...

def mymethod[T: StrConstructible](inp: str, out: Type[T]) -> Optional[T]:
    try:
        return out(inp)
    except Exception:
        return None

修复说明

  1. 定义协议约束:通过StrConstructible协议明确规定,被传入的类必须拥有一个接受单个字符串参数的构造函数,让Pyright能够识别合法的类类型。
  2. 泛型约束:给泛型T添加StrConstructible约束,确保out参数对应的类符合协议要求,消除类型检查报错。
  3. 异常处理:增加try-except块捕获构造过程中可能出现的异常,保证函数始终返回Optional[T]类型的值(成功返回实例,失败返回None),符合返回值注解要求。

内容的提问来源于stack exchange,提问作者Camden Narzt

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:17:35