Код: Выделить всё
from ctypes import *
from ctypes import _Pointer
from typing import TypeVar, Callable
T = TypeVar('T')
def foreach(array: _Pointer[T], cond: Callable[[T], bool]):
i = 0
v: T = array[i]
while cond(v):
yield v
i += 1
v = array[i]
# Example
c_array = ... # _Pointer[int]
for i in foreach(c_array, lambda i: i < 10):
print(i) # 'i' should be recognized as 'int', not 'Any'
Код: Выделить всё
TypeError: type '_ctypes._Pointer' is not subscriptable
Traceback (most recent call last):
File "
.py", line 234
def foreach(array: _Pointer[T], cond: Callable[[T], bool]):
~~~~~~~~^^^
Когда я использую псевдонимы типов, отображается только имя псевдонима, а не фактический тип. И я не хочу сообщать Python, используя подсказки типов, что указатель - это, например, список (
Код: Выделить всё
def foreach(array: list[T], ...)Я использую VS Code с официальным пакетом Python.
Подробнее здесь: https://stackoverflow.com/questions/776 ... pe-hinting