Python Glossary English

все 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Сообщить о неточности