def footprint(sobject):
 n = 0
 for a in sobject.__keylist__:
  v = getattr(sobject, a)
  if (v is None):
   continue
  if isinstance(v, Object):
   n += footprint(v)
   continue
  if hasattr(v, '__len__'):
   if len(v):
    n += 1
   continue
  n += 1
 return n

def footprint ( sobject ) : n = 0 for a in sobject . __keylist__ : v = getattr ( sobject , a ) if ( v is None ) : continue if isinstance ( v , Object ) : n += footprint ( v ) continue if hasattr ( v , '__len__' ) : if len ( v ) : n += 1 continue n += 1 return n
get the i{virtual footprint} of the object .