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