确定输入对象是否为 ctypes 对象?

Determine if input object is a ctypes object?

我想确定函数的输入对象是否是 ctypes 对象。看起来,基于 ctypes class 层次结构,有一个 class 所有 ctypes 对象继承自称为 _CData.

我在 _ctypes.cline 2911_ctypes 源代码中找到了它的位置,但我似乎无法从 import =10=] 或 _ctypes 图书馆。有没有办法 import 这个对象以便我可以使用它,或者有没有其他方法来检查输入是否是 ctypes 对象?

清单[Python.Docs]: ctypes - A foreign function library for Python.

_ctypes._CData 是非 public class,无法导入(!!!当心,这可能有一个很好的理由 !!!) 直接。
但是,我们可以使用涉及 _ctypes._SimpleCData 的解决方法(也不是 public - 根据 doc) 这是它的直接后代之一:

>>> import ctypes as ct
>>>
>>> ct.c_int.__mro__
(<class 'ctypes.c_int'>, <class '_ctypes._SimpleCData'>, <class '_ctypes._CData'>, <class 'object'>)
>>> ct.Structure.__mro__
(<class '_ctypes.Structure'>, <class '_ctypes._CData'>, <class 'object'>)
>>> ct._SimpleCData.__mro__
(<class '_ctypes._SimpleCData'>, <class '_ctypes._CData'>, <class 'object'>)
>>> CData = ct._SimpleCData.__mro__[-2]
>>>
>>> CData, type(CData)
(<class '_ctypes._CData'>, <class 'type'>)
>>>
>>> isinstance(ct.c_int(1), CData)
True
>>>
>>> class S0(ct.Structure): pass
...
>>> s0 = S0()
>>>
>>> isinstance(s0, CData)
True
>>> isinstance(s0, ct._SimpleCData)
False