Python类型提示:typing.Mapping与typing.Dict
我正在从事一个python3项目,在该项目中,我们始终使用Python类型提示:typing.Mapping与typing.Dict,python,python-3.x,type-hinting,Python,Python 3.x,Type Hinting,我正在从事一个python3项目,在该项目中,我们始终使用键入模块类型提示 似乎我们使用typing.Dict和typing.Mapping几乎可以互换 有什么理由选择其中一个而不是另一个吗?我自己设法回答了这个问题 typing.Dict应用于指示支持元素类型暗示的文本Dict类型,即Dict[bytes,str] typing.Mapping是一个对象,它定义了\uuuu getitem\uuuuuuuuuuuuuuuuuuu、\uuuuuuu iter\uuuuuuuuuuu魔术方法 ty
键入模块类型提示
似乎我们使用typing.Dict
和typing.Mapping
几乎可以互换
有什么理由选择其中一个而不是另一个吗?我自己设法回答了这个问题
typing.Dict
应用于指示支持元素类型暗示的文本Dict
类型,即Dict[bytes,str]
typing.Mapping
是一个对象,它定义了\uuuu getitem\uuuuuuuuuuuuuuuuuuu、\uuuuuuu iter\uuuuuuuuuuu
魔术方法
typing.MutableMapping
是一个与Mapping定义相同的对象,但也具有\uuuuuuuu setitem\uuuuuuuuuuuuuu、\uuuuuuuuu delitem\uuuuuuuuuuu
魔术方法
typing.Mapping等是基于中的abc类型的。dicts是一种映射
dict
是一种更具体的映射,它就像一个序列与一个列表dicts是可变的&一种特定的实现<代码>映射是一个接口,是不可变的。要成为映射
它必须以某种方式定义所有这些方法,但是如果实现抽象方法并从集合继承,则将提供mixin方法。abc.Mapping经验法则:除泛型类型外,返回特定类型。这为函数和类的用户提供了最大的灵活性和安全性Dict
是不变的,Mapping
是协变的。例如,当您有一个函数接收Dict[a,B]
并尝试传递Dict[a,C]
时,这一点很重要,其中C
是B
的子类型。使用映射[A,B]
可以避免键入错误,请参阅。