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