`_v` can be read and written from the outside of the class so the generic class should be invariant properly.
未关闭
还没有人认领这个 Issue。
bug
pending
- 主要语言
- Python
- 星标
- 20.6k
- 派生
- 3.3k
- PR 合并指标
- PR 指标待抓取
描述
*Memo:
- mypy --strict test.py
- mypy 1.19.1
- Python 3.14.0
- Windows 11
v can be read and written from the outside of the class so the generic class is invariant properly as shown below:
class Cls[T]:
v: T = cast(T, 100) # Invariant
cls: Cls[int] = Cls[int]()
# It indicates `Invariant`.
cls1: Cls[float] = cls # Errpr
cls2: Cls[int] = cls # No error
cls3: Cls[bool] = cls # Error
# Read & Write
print(cls.v) # No error
cls.v = 200 # No error
Now, _v can be read and written from the outside of the class but the generic class is covariant improperly as shown below so it should be invariant properly:
*Memo:
- A single leading underscore(_abc) just indicates Internal use so it's not private(Readable & Writable).
class Cls[T]:
_v: T = cast(T, 100) # Covariant
cls: Cls[int] = Cls[int]()
# It indicates `Covariant`.
cls1: Cls[float] = cls # No error
cls2: Cls[int] = cls # No error
cls3: Cls[bool] = cls # Error
# Read & Write
print(cls._v) # No error
cls._v = 200 # No error
贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
首先,在所述的 mypy 1.19.1 和 Python 3.14.0 版本下,使用 mypy --strict 复现 test.py 中的报告。追踪 mypy 如何为具有公共属性和单下划线属性的泛型类推断方差。完成的标准是 _v 示例被视为不变,同时保留所示的有效和无效赋值。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- python
- 领域
- devtools
- Issue 类型
- 缺陷
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 38/100