【问题标题】:How to make Mypy recognize frozen dataclasses as Hashable如何让 Mypy 将冻结的数据类识别为 Hashable
【发布时间】:2021-07-30 14:53:01
【问题描述】:

因此,使用frozen=True 创建有效的可散列数据类很棒,但它破坏了我对我编写的代码进行类型检查的一些能力,因为 mypy 似乎不会自动将冻结的数据类识别为 Hashable 的实例。这当然是有道理的,因为我没有明确地扩展该类(如果它可以推断出来,那就太棒了),但是有没有人为这个问题找到了一个优雅的解决方案/解决方法?

【问题讨论】:

  • 你能举一个不可行的例子吗?

标签: python python-3.x types mypy python-dataclasses


【解决方案1】:

由于使用此类数据类的列表,深入研究我的问题实际上是一个差异问题。支持就在那里,请注意差异?? :)

在我的情况下,在我的类型注释中使用 Sequence[Hashable] 而不是 List[Hashable] 安抚了 mypy。事实证明,由于列表元素是可变的,它们是不变的,而序列是协变的。见https://mypy.readthedocs.io/en/stable/common_issues.html#invariance-vs-covariance

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2020-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2021-10-22
    • 1970-01-01
    相关资源
    最近更新 更多