为了账号安全,请及时绑定邮箱和手机立即绑定

尝试注释散列变量时,“ABCMeta”对象不可下标

尝试注释散列变量时,“ABCMeta”对象不可下标

慕尼黑5688855 2022-07-12 09:32:34
以下dataclass:from abc import ABCfrom collections.abc import Mappingfrom 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尝试使用HashLiteral该类时出现错误:pairs: Mapping[Expression, Expression]TypeError: 'ABCMeta' object is not subscriptable我上面的注释有什么问题pairs?
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

您应该使用typing.Mapping而不是collections.abc.Mappingtyping包含许多不同类型的通用版本,旨在用于类型提示。根据mypy文档typing,类和类之间存在一些差异collections.abc,但他们不清楚这些差异到底是什么。



查看完整回答
反对 回复 2022-07-12
  • 1 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号