class Packet(data.StructLayout): def __init__(self, element_shape = 8, *, has_first = False, has_last = False): assert has_first or has_last layout = {'data': element_shape} if has_first: layout['first'] = 1 if has_last: layout['last'] = 1 super().__init__(layout) self.has_first = has_first self.has_last = has_last