Returns a dict of all this structures attributes and values, skipping
        any attributes that start with an underscore (assumed they should be ignored).

def attributes(self):
        """
        Returns a dict of all this structures attributes and values, skipping
        any attributes that start with an underscore (assumed they should be ignored).
        """
        return dict([(name, getattr(self, name)) for (name, _) in self.format.values() if name is not None and not name.startswith('_')])