我如何让打字检查知道一个对象是 List[int]?

How do I let the typing check know an object is List[int]?

我想让打字检查知道一个对象是一个 List[int],在 PyCharm。

例如,我有以下代码:

def foo(a: List[int]):
  print(a)

arr = np.ndarray([1, 2, 3])
arr_list = arr.tolist()
foo(arr_list) # <-PyCharm warning

警告说 Expected type 'List[int]', got 'object' instead,因为要列出键入提示 returns 对象。

有没有办法让打字检查以某种方式知道 arr_list 的打字,比如 assert all(isinstance(i,int) for i in arr_list),这样警告就消失了?

感谢 user2235698 的提示。这解决了问题:

def foo(a: List[int]):
  print(a)

arr = np.ndarray([1, 2, 3])
arr_list = arr.tolist()

# this silences the warning
arr_list = typing.cast(List[int], arr_list)

foo(arr_list)