python3.3, win32
есть кусок памяти, доступный для чтения
m = mmap.mmap(0, MEMMAPFILESIZE, MEMMAPFILE, access=mmap.ACCESS_READ)
из него хочется получить объект с полями для чтения из этой памяти напрямую, но не хочется создавать класс с кучей пропертей и ручным чтением по нужным оффсетам
сейчас я сделал так
header_struct = struct.Struct('i')
Header = collections.namedtuple('Header', 'version')
h = Header._make(header_struct.unpack_from(m))
print(h.version)
проблема в том, что значения в памяти динамические, другая программа их меняет, а данный способ лишь копирует память, к тому же не будет работать автодополнение
если делать через Structure
class Header(ctypes.Structure):
_fields_ = [
('version', ctypes.c_int),
]
h = Header.from_buffer(m)
это вызывает ошибку, так как буфер должны быть writable
а хочется красиво и просто