[英]Type assertion in MyPy
像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
關鍵字來斷言類型(在運行時沒有影響)。 我已經閱讀了文檔並看到了cast函數,但我想知道是否有任何內聯解決方案或我缺少的東西。
根據MyPy 文檔,有兩種方法可以進行類型斷言:
typing.cast(..., ...)
函數。 文檔說這“通常”是為了從超類型轉換為子類型,但並沒有說你不能在其他情況下使用它。assert isinstance(..., ...)
,但這僅適用於在運行時表示的具體類型,如int
或list
,而不適用於更復雜的類型,如List[int]
不能由isinstance
。由於文檔沒有提到任何其他進行類型斷言的方法,似乎這些是唯一的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.