gpt4 book ai didi

python - MyPy 中的类型断言

转载 作者:行者123 更新时间:2023-12-03 23:44:17 25 4
gpt4 key购买 nike

一些功能如 numpy.intersect1d返回不同的类型(在这种情况下是一个 ndarray 或三个 ndarray 的元组)但编译器只能推断其中一个,所以如果我喜欢:

intersection: np.ndarray = np.intersect1d([1, 2, 3], [5, 6, 2])
它抛出一个类型警告:
Expected type 'ndarray', got 'Tuple[ndarray, ndarray, ndarray]' instead
我可以在其他语言中避免此类问题,例如 Typescript,我可以使用 as关键字到 assert the type (对运行时没有影响)。我已经阅读了文档并看到了 cast功能,但我想知道是否有任何内联解决方案或我遗漏的东西。

最佳答案

根据MyPy documentation ,有两种方法可以进行类型断言:

  • 作为内联表达式,您可以使用 cast功能。文档说这“通常”是为了从父类(super class)型转换为子类型,但并没有说你不能在其他情况下使用它。
  • 作为声明,您可以使用 assert isinstance(..., ...) ,但这仅适用于像 int 这样的具体类型或 list在运行时表示,而不是更复杂的类型,如 List[int]无法通过 isinstance 检查.

  • 由于文档没有提到进行类型断言的任何其他方法,似乎这些是唯一的方法。

    关于python - MyPy 中的类型断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63829680/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com