'Parses ourselves from data.'

def __init__(self, data):

    format_str = ''.join([x[0] for x in self._fields])
    self.size = struct.calcsize(format_str)
    try:
        parsed_data = struct.unpack(format_str, data[:self.size])
    except struct.error:
        raise RuntimeError('Unable    to    parse')
    for i in range(len(self._fields)):
        setattr(self, self._fields[i][1], parsed_data[i])
