все Python 3ctypesпонятие
ctypes.Structure
структуры
Базовый класс для описания структуры C: поля задаются списком _fields_ из пар «имя, тип ctypes».
Синтаксис
class Point(ctypes.Structure):
_fields_ = [('x', ctypes.c_int), ('y', ctypes.c_int)]
Порядок и типы полей должны точно совпадать со структурой в коде на C, иначе данные прочитаются со сдвигом и без всякой ошибки. Выравнивание полей делается как у компилятора C, поэтому sizeof может оказаться больше суммы размеров полей; _pack_ его меняет. Для чтения и записи двоичных форматов без вызова C-кода проще модуль struct.
Примеры
import ctypes
class Point(ctypes.Structure):
_fields_ = [('x', ctypes.c_int), ('y', ctypes.c_int)]
p = Point(1, 2)
print(p.x, p.y) # → 1 2
p.x = 10
print(p.x) # → 10
print(ctypes.sizeof(Point)) # → ? обычно 8 байт — два int по 4
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности