type() 中的大小写匹配无法正常解析
作者: Hibou57创建于 2026年7月30日更新于 2026年8月27日
标签bug
** 环境**
- Python版本: 3.12.3
- PyRight 版本: 1.1.411
- Pyright配置:[pyrightconfig.json] (https://GitHub.com/user-attachments/ files/30548992/pyrightconfig.json).
** 描述错误**
基于对象类型进行辨别,使用匹配大小写语句,似乎被PyRight错误地解释. 它抱怨案件覆盖面不足,错误地,并另外建议增加对Python来说在战术上无效的案件陈述。
PyRight非常干净而有用,但对此问题我感到失望,因为案件覆盖检查与类型检查(如SML)同样重要. 还可以在每一案件分支开始时加上“sert isintance(.)”,但确保覆盖范围的缺失令人痛心,这确实很重要。
** 守则或截图**
评论中有解释。
向其他人说明:下面的例子只符合准确的类别(真实情况与一些 " NamedTuple " 类别有关)。 如果inst'是一个衍生出B ' 类的例子,那就行不通了(不会印出任何东西)。 我不知道是否有办法表达相同观点, 有存在 ' ,但不能用在这种对应 ' 的表述中。
导入内嵌
类基数 :
通过
A类(Base) :
通过
B类( 基准) :
通过
C类(基准) :
通过
# 在某种名称空间中添加类,这样比赛中的案例就不会
# 被当成可变的名字。 没有这些,案件陈述并不意味着什么
# 这是打算。 虫子不在这里,这是为了向试图
# 发现和学习事物 #
类别NS:
A=A = (单位:千美元)
B=B类
C = C 类
内:基数=B()
匹配类型( int) :
案件编号:
打印("A")
页:1
打印 ("B")
案件编号:
打印 ("C")
# 它印出"B",如所料,所以有效,但PyRight抱怨:
# > 错误: 匹配语句中的情况没有穷尽处理所有值
# > 未处理类型 : "type[B]"
# 此外,该建议具有误导性,因为使用`[.]型 ' 产量
# 一个语法错误. 如果想测试,请不要评论下面的内容.
{\fn方正粗倩简体\fs12\an8\1cHFFFF00\b0}
# 匹配类型( int ):
# case buins.type [NS.A:] (中文(简体) ).
# 打印 ("A")
# case buildingins.type [NS.B:] (中文(简体) ).
# 打印 ("B" )
# case buildingins.type [NS.C:] (中文(简体) ).
# 打印 ("C" )内容来源: microsoft/pyright