6 return self.__getattribute__(field)
10 def _formatField(self, field):
14 if hasattr(v, '__iter__'):
18 return '[%d x %s]'%(len(v), type(v[0]))
24 return [cls._identity_field]
27 ignore = self._ignore()
28 keys = sorted(self.c.keys())
29 return [(k,self._formatField(k)) for k in keys if k not in ignore]
32 classname = self.__class__.__name__
34 if self._identity_field:
35 identity = self.__dict__.get(self._identity_field)
36 identity = ' ' + (identity and repr(identity) or 'hash=%d'%hash(self))
40 payload = " ".join(["%s=%s" % (k, v) for k,v in self._fields()])
42 payload = ": "+payload
44 return "<%s%s%s>" % (classname, identity, payload)
46 class FormattableRecord(Record):
48 def _formatField(self, field):
49 func = self._format.get(field)
51 return func(self.get(field))
53 return super(FormattableRecord, self)._formatField(field)
55 class NullableRecord(FormattableRecord):
58 v = self.__dict__.get(field)
62 return self._default.get(field)