isinstance(the_parameter, ctypes.Array)
将检查一个ctypes数组。
的ctypes定义了以下简单的标量类型(注意,它们是私有的):
_SimpleCData # _type_: 'P' for void *
_Pointer # _type_: ctypes.c_int
_CFuncPtr # _flags_, _restype_, _argtypes_, _check_retval_
虽然您可以直接继承这些类型的,在大多数情况下,你应该使用现有的子类和工厂功能,如c_void_p
,POINTER
和CFUNCTYPE
。
ctypes的定义了以下聚合类型:
Array # _type_, _length_
Structure # _fields_, _anonymous_, _pack_, _swappedbytes_
Union # _fields_, _anonymous_, _pack_, _swappedbytes_
Array
亚类通常通过使用操作者*
序列重复创建的,例如IntArray = c_int * 10
。您可以改为使用以下内容:
class IntArray(ctypes.Array):
_type_ = ctypes.c_int
_length_ = 10
a = IntArray(*range(10))
a_list = a[:]