С тех пор, как я прочитал сообщение Дэйва Бизли об обработке двоичного ввода-вывода (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
.
Что представляет собой питоническое решение этой проблемы?