如何通过python 3.5键入模块键入提示collections.OrderedDict
问题内容:
我想使用OrderedDict,其中键是枚举,而项目是特定类。
如何使用打字模块提示这一点?这个提示的namedtuple类似什么:
Move = typing.NamedTuple('Move', [('actor', Actor), ('location', Location)])
问题答案:
如AChampion的评论中所述,您可以使用MutableMapping
:
class Actor(Enum):
# ...Actor enum menbers...
class Location:
# ...Location class body...
class MapActor2Location(OrderedDict, MutableMapping[Actor, Location]):
pass
对于像我这样以前从未使用过该typing
模块的人的附录:请注意,类型定义使用 不带 括号的索引语法([T]
)。我最初尝试过这样的事情:
class MyMap(OrderedDict, MutableMapping([KT, VT])): pass
(请注意周围的多余括号[KT, VT]
!)
这给了我一个相当混乱的错误:
TypeError: Can't instantiate abstract class MutableMapping with abstract methods __delitem__, __getitem__, __iter__, __len__, __setitem__