首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预期类型'Iterable‘(匹配的泛型'Iterable[SupportsLessThanT]')

预期类型'Iterable‘(匹配的泛型'Iterable[SupportsLessThanT]')
EN

Stack Overflow用户
提问于 2022-10-09 09:55:40
回答 2查看 121关注 0票数 1
代码语言:javascript
复制
@dataclass(frozen=True, eq=True, order=True)
class C:
    x: int

l = [C(1), C(2), C(1)]
print(sorted(l))

上面的代码工作,但给出了一个警告:Expected type 'Iterable' (matched generic type 'Iterable[SupportsLessThanT]'), got 'list[C]' instead

我认为传递给@dataclass@dataclass参数应该导致__lt__等的生成,从而确认为SupportsLessThanT

__lt__的显式实现可以沉默警告,但是我如何在没有警告的情况下保持沉默呢?

EN

回答 2

Stack Overflow用户

发布于 2022-10-09 12:23:15

显然是PyCharm中一个已知的bug,跟踪了这里

票数 1
EN

Stack Overflow用户

发布于 2022-10-10 14:09:34

只是为了在这里添加一些附加的上下文,因为在bug跟踪器中似乎没有明确提到.

这是一个bug,很可能是因为dataclass魔术正在添加方法和注释,动态地添加。一些不是在本质上的静态类型检查器来挑选。他们用特殊的插件来解决这种情况,这些插件是根据特定的规范量身定做的。

当人们试图在自己的代码中模仿dataclass-like行为时,即在运行时构建签名和/或添加注释时,就会出现一个相关的问题。他们总是遇到相同的障碍,静态类型检查完全无视他们的意图。

静态类型检查器不会执行您的代码,它们只是读取它。

相关信息:

我和JetBrains的人没有任何联系。我只是想指出这一点是公平的,因为我认为这是一个更“可原谅”的错误,因为他们被迫“黑客”佩普557

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74003752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档