python-使用键入类手动执行键入约束

时间:2019-01-25 06:13:39

标签: python-3.x typing

我想验证某些参数的类型,最好使用typing定义

例如:

from typing import List, Dict

def func(param1, param2):
     assert param1 is of type Dict[str, int] # How can this be done?
     assert param2 is of type List[Any] # How can this be done?

对于非复杂类型,这很容易。 assert isinstance(param1, str)

显然,这个问题已经简化了

2 个答案:

答案 0 :(得分:1)

您可以使用enforcetypeguard之类的库在运行时强制执行类型注释。

答案 1 :(得分:0)

根据typing,这仅是为了使类型提示更具可读性,而Python实际上并未执行任何类型检查。

由于列表和字典可以包含任意类型(对于字典,它们必须是可哈希的-但仍然是“几乎任意”),所以唯一的方法是遍历集合并检查每个项目。

assert isinstance(param1, dict)
for k, v in param1.items():
    assert isinstance(k, str)
    assert isinstance(v, int)