der*_*ers 6 python typing type-hinting python-3.x mypy
在我从python 3.5升级到python 3.6之前,这个工作:
import typing
issubclass(list, typing.List[int]) # returns True
isinstance([1, 2 ,3], typing.List[int]) # returns True
Run Code Online (Sandbox Code Playgroud)
现在在python 3.6中,这两个都引发了以下异常:
TypeError: Parameterized generics cannot be used with class or instance checks
Run Code Online (Sandbox Code Playgroud)
这是新的预期行为还是错误?如果打算如何执行检查,上面的代码在python 3.6中进行?
这是故意的,您不应该将类与中定义的类型混合在一起typing,至少,这是我所理解的要点。对此进行了大量讨论的问题#136 Kill __subclasscheck__也引入了此更改。提交消息还引用了isinstance/subclass检查将如何引发TypeErrors:
几乎所有事情都可以使用
isinstance()或issubclass()加注。TypeError但也有例外:[...]
您可以在不指定泛型类型包含的类型的情况下进行比较,即:
isinstance(list, typing.List[int])
Run Code Online (Sandbox Code Playgroud)
但这是你能做的最好的事情。
| 归档时间: |
|
| 查看次数: |
1496 次 |
| 最近记录: |