以下dataclass条:

from abc import ABC
from collections.abc import Mapping
from dataclasses import dataclass, field

@dataclass(eq=True, order=True, frozen=True)
class Expression(Node, ABC):
    def node(self):
        raise NotImplementedError

用作以下对象的基类:

@dataclass(eq=True, frozen=True)
class HashLiteral(Expression):
    pairs: Mapping[Expression, Expression]
    ...

Node的定义如下:

@dataclass(eq=True, frozen=True)
class Node:
    def __str__(self) -> str:
        raise NotImplementedError

当try 使用HashLiteral类时,我得到一个错误:

pairs: Mapping[Expression, Expression]
TypeError: 'ABCMeta' object is not subscriptable

我对上面pairs的注释有什么问题?

推荐答案

你应该用typing.Mapping而不是collections.abc.Mapping.typing包含各种类型的许多通用版本,设计用于类型提示.根据mypy documentation名学生的说法,typing个班和collections.abc个班之间存在一些差异,但他们不清楚这些差异到底是什么.

Python-3.x相关问答推荐

使用Pandas 阅读Excel定义的名称和单元格值(&Q;)

模型中的__str__方法在Django管理面板中生成大量重复查询

确定字符串的长度并提取前15或14个字符

具有多个值的极轴旋转和熔化/取消旋转(反转旋转)操作(Pandas 堆叠/取消堆叠交替/UDF覆盖)

无法使用Python slack 螺栓SDK读取在 slack 通道中收到的消息

为什么 get_form 方法中小部件的更改没有反映 Django 管理站点中的更改

TypeError: issubclass() arg 1 在 Flask 中导入 langchain 时必须是一个类

从 https://www.niftytrader.in/stock-options-chart/sbin 提取 SBIN 股票最大痛苦值的 Python 代码不起作用 - 我错过了什么?

为什么 numpy 的 `np.char.encode` 会将一个空的 unicode 数组变成一个空的 `float64` 数组?

pymongo 失败并出现错误未定义

为直方图中的每个 bin 绘制不同的 colored颜色 (Matplotlib)

python 3中的SQLAlchemy ER图

将变量传递给 Google Cloud 函数

两个Pandas数据框中的共同列列表

使用 python 正则表达式匹配日期

使用 Python 3 按行进行分析

ImportError:无法导入名称cross_validate

当 None 被传递时,如何将默认值应用于 python 数据类字段?

如何修复:cx_Oracle.DatabaseError:DPI-1047:找不到 64 位 Oracle 客户端库 - Python

如何将python日志(log)级别名称转换为整数代码