ctypes структуры переменной длины

С тех пор, как я прочитал сообщение Дэйва Бизли об обработке двоичного ввода-вывода (http://dabeaz.blogspot.com/2009/08/python-binary-io-handling.html), я хотел создать библиотека Python для определенного проводного протокола. Однако я не могу найти лучшего решения для структур переменной длины. Вот что я хочу сделать:

import ctypes as c

class Point(c.Structure):
    _fields_ = [
        ('x',c.c_double),
        ('y',c.c_double),
        ('z',c.c_double)
        ]

class Points(c.Structure):
    _fields_ = [
        ('num_points', c.c_uint32),
        ('points', Point*num_points) # num_points not yet defined!
        ]

Класс Points не будет работать, поскольку num_points еще не определено. Я мог бы переопределить переменную _fields_ позже, когда num_points станет известным, но поскольку это переменная класса, она повлияет на все другие экземпляры Points .

Что представляет собой питоническое решение этой проблемы?

13
задан Jake 10 August 2011 в 18:34
поделиться