#11741·pyright

当类型嵌套且元类定义了 __get__ 时,TypeForm 会拒绝联合

作者: nickshirobokov创建于 2026年9月11日更新于 2026年9月12日
标签bug

** 描述错误** 我定义了一个元组别,其中XQGetQQQ返回"cls"不变,由这个元组别构建的嵌入式组别,而嵌入式组别联为TypeForm. 错误: 此 TypeForm 然后拒绝合适的结合 。

** 守则或截图**

zz
从打入  扩展导入类型格式

类Meta( 类型) :
f Get [T:Meta] (中文(简体) ).
cls: T, (中文(简体) ).
实例: 对象 QQ 无,
拥有者:% 1 类型 无 = 无,
) - > T: (中文(简体) ).
返回 cls

类所有者 :
类 A( metaclass=Meta):
通过

B类( 元等 = Meta ):
通过

T1: TypeForm [Owner.A |所有者.B]=所有者.A#接受
T2: TypeForm [Owner.A |所有者.B]=所有者.B#被接受
T3: TypeForm [Owner.A QQ所有者.B]=所有者.A QQ所有者.B#拒绝:

# 类型 "UnionType" 无法被指定为已声明类型"TypeForm [A·Q·B]"
# "联盟Type"不能被分配到"TypeForm [A·Q·B]".

模块扫描类没有这个bug.

[Python] 从打入 扩展导入类型格式

类Meta( 类型) : f Get [T:Meta] (中文(简体) ). cls: T, (中文(简体) ). 实例: 对象 QQ 无, 拥有者:% 1 类型 无 = 无, ) - > T: (中文(简体) ). 返回 cls

类 A( metaclass=Meta): 通过

B类( 元等 = Meta ): 通过

T1: TypeForm [A·Q·B] = A#接受 T2: TypeForm [A | B] = B# 被接受 T3: TypeForm [A | B] = A | B#接受


删除 Get 也会使bug消失.

```2ZZ
从打入  扩展导入类型格式

类Meta( 类型) :
通过

类所有者 :
类 A( metaclass=Meta):
通过

B类( 元等 = Meta ):
通过


T1: TypeForm [Owner.A |所有者.B]=所有者.A#接受
T2: TypeForm [Owner.A |所有者.B]=所有者.B#被接受
T3: TypeForm [Owner.A |所有者.B]=所有者.A |所有者.B#接受.

** VS 代码扩展或命令行**

  • Pyright v 1.1.414 既包括CLI,也包括Pylance
  • Python 3.14.7 (英语).
  • 打字 电话分机 4.1.6

内容来源: microsoft/pyright