使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的类似问题,但没有一个建议的答案让我非常满意——尽管,虽然有点粗糙,但这是我得到的最接近的答案