ctypes.py_object 的属性

the attribute of ctypes.py_object

我正在尝试创建一个 python 数组,但遇到以下代码问题

def __init__(self, size):
    assert size>0, "Array size must be > 0"
    self._size = size
    # Create the array structure using the ctypes module.

    arraytype = ctypes.py_object * size
    self._elements = arraytype()

在初始化中,它使用ctypes创建一个数组,最后两行我不太明白。我试着把它们改成一行

self._elements = ctypes.py_object() * size

但是它不起作用并给我错误

TypeError: unsupported operand type(s) for *: 'py_object' and 'int'

谁能帮我解释一下?

您想乘以 () 简单删除括号就可以了

self._elements = ctypes.py_object * size
  • ctypes.py_object是一个类型
  • ctypes.py_object * size是一个类型
  • ctypes.py_object() 是一个类型的实例

你要做的是先把ctypes.py_object * size类型,然后实例化它:

self._elements = (ctypes.py_object * size)()

虽然您可能想要使用 Python 列表,但我不确定您是否需要 ctypes 数组。示例:

self._elements = [None] * size

这会起作用self._elements = (size*ctypes.py_object)( )