使python类型下标泛型(实例)可检查
我希望能够更多地重复使用使python类型下标泛型(实例)可检查,python,python-3.x,python-typing,Python,Python 3.x,Python Typing,我希望能够更多地重复使用键入,即用于类型检查,最好是以与通常的方式一致的方式来检查某物是否属于 (我的)理想是能够做以下事情: 输入import Union、Iterable、Any、Mapping KeysType=checkable(联合[Iterable[str],映射[str,Any]] 断言isinstance(['foo','bar'],键类型) 断言不存在([3,'foo','bar'],键类型) 断言isinstance({'foo':1,'bar':2},键类型) 断言isin
键入
,即用于类型检查,最好是以与通常的方式一致的方式来检查某物是否属于
(我的)理想是能够做以下事情:
输入import Union、Iterable、Any、Mapping
KeysType=checkable(联合[Iterable[str],映射[str,Any]]
断言isinstance(['foo','bar'],键类型)
断言不存在([3,'foo','bar'],键类型)
断言isinstance({'foo':1,'bar':2},键类型)
断言isinstance({0:0,'foo':1,'bar':2},KeyType)
断言不存在(5,键类型)
当然,有些地方有点不对劲,因为我使用的是isinstance
,意思是有接口或有兼容的结构。当愿望困扰我时,我告诉自己:
from collections.abc导入映射
isinstance(dict(),映射)
然而,dict
并不是映射的实例
尽管如此,如果与isinstance
的行为挂钩太可怕,那么即使是自定义的也类似于此类型的
函数,而不是isinstance
函数
关于stackoverflow的类似问题,但没有一个建议的答案让我非常满意——尽管,虽然有点粗糙,但这是我得到的最接近的答案