Как проверить, является ли переменная типом ctypes?

#python #ctypes

#python #ctypes

Вопрос:

Я хотел бы проверить, является ли переменная ctypes типом. В документации указано, что все они наследуют ctypes._CData тип. Однако это непубличный класс (и это не позволяет использовать isinstance or issubclass ).

Каков рекомендуемый путь?

Это также может быть полезно для определения типа и проверки типа аргумента

Комментарии:

1. Проверка isinstance(var, _SimpleCData) , похоже, работает, этого достаточно?

2. Больше похоже на проблему XY . Зачем вам нужна эта функциональность? _CData _SimpleCData ) могут сделать трюк, но на самом деле это просто рабочие модули (поскольку они являются частными). Не злоупотребляйте CTypes , «написав программы на C на Python «. Сделайте тяжелую работу на C , а затем оберните ее в Python .

3. Мне это нужно для двух вещей: 1) подсказка типа, 2) функция с несколькими подписями (если это ctype, сделайте это, если не делайте этого). Это своего рода полезное исключение из правила «писать программы на C на python»: на самом деле я пишу генератор кода на C . И определение структур в python дает мне бесплатную привязку Python для использования созданной библиотеки на C ( ) и Python

4. @101 _CData кажется даже недоступным. _SimpleCData, как вы сказали, является закрытым… Мой текущий обходной путь — попробовать ctypes.sizeof() для типа, если он выдает ошибку, это не тип ctype … Но это все равно хакерство… Может быть, мне следует написать проблему в python bugtracker ?

5. Имеет ли значение, что она частная? Это действительно работает. И кажется, что любое решение будет, по крайней мере, немного хакерским.