Подсказка типов для ctypes - PullRequest
1 голос
/ 16 июня 2020

Могу ли я ввести подсказку типа ctype ?

from ctypes import *

def wrap_function(library: str, name: str, restype, argtypes) -> *What goes here*:
    """Simplify wrapping ctypes functions"""
    func = library.__getattr__(name)
    func.restype = restype
    func.argtypes = argtypes
    return func

Проверка ctypes функций, которые я создал, прежде чем я получу <_FuncPtr object at 0x--------->. Как мне указать это в python?

Я пробовал

ctypes.POINTER(ctypes.CFUNCTYPE)

, но он не работает с

Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: must be a ctypes type

1 Ответ

1 голос
/ 16 июня 2020

CFUNCTYPE - это прототип функции, а не тип ctypes. Вы можете использовать CFUNCTYPE, чтобы определить тип функции, а затем заключить его в указатель, например,

from ctypes import *
POINTER(CFUNCTYPE(c_int, POINTER(c_int), POINTER(c_int)))

Вы можете использовать определенный тип для ввода подсказки. Я вижу, вы пытаетесь «упростить» упаковку. Но вы не можете вводить типы stati c, если цель вашей функции - возвращать функции с типами Dynami c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...