以下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中当前数据帧的匹配与更新

GUI 仍然有效并且没有错误消息时图形意外冻结 |具有多线程的 Pyside6 和 pyqtgraph (Python 3.11.4)

如何获取自定义文件上传路径的对象ID?

在新数据帧上自动提取两个字符串 python 之间的相等性

Pandas 窗口聚合两个排序表

Pandas 在每组两个条件之间获得时间增量

如何通过从特定列创建分组多标题来reshape 数据框?

pip 找不到最新的软件包版本

使用正则表达式捕获组解析地址

从 Python2 到 Python3 的这种解包行为的变化是什么?

多个返回函数的列表理解?

UnicodeDecodeError:utf-8编解码器无法解码位置 1 的字节 0x8b:无效的起始字节,同时读取Pandas中的 csv 文件

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

Python:如何在三个列表中找到共同值

Python 异步调试示例

如何制作函数Collection

Python3 - 如何从现有抽象类定义抽象子类?

SQLAlchemy:如果不存在则创建模式

如何在 QGraphicsView 中启用平移和zoom

字典理解中的操作顺序