我正在尝试从 python 调用一些 c API。 我有一个类定义为
class X(ctypes.Structure):
_fields_ = [
("member", ctypes.c_int * 5)
]
我想知道成员是否属于数组类型。为了做到这一点,我做了以下实验,但我无法检查 a 的类型是否为数组。
>>>
>>> import ctypes
>>> a = 5*ctypes.c_int
>>> type(a)
<class '_ctypes.PyCArrayType'>
>>> b = (type(a) == _ctypes.PyCArrayType)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: module 'ctypes' has no attribute 'PyCArrayType'
>>>
如何检查 a 的类型是否为数组?
答案 0 :(得分:1)
根据[Python.Docs]: class ctypes.Array(*args)(重点是我的):
<块引用>数组的抽象基类。
翻译成代码:
<块引用>>>> import ctypes as ct
>>>
>>> I5 = ct.c_int * 5
>>> I5.__mro__
(<class '__main__.c_long_Array_5'>, <class '_ctypes.Array'>, <class '_ctypes._CData'>, <class 'object'>)
>>> issubclass(I5, ct.Array)
True
>>>
>>> i5 = I5()
>>> isinstance(i5, ct.Array)
True