It gets even better though.

class MyView:
  def __init__(self, view):
        self._view = view
  def keys(self):
         return [p.name for p in self._view.structure()]
  def has_key(self, key):
         return key in self.keys()
  def __getattr__(self, key):
      return getattr(self._view, key)
  def __setattr__(self, key, value):
      if key == "_view":
          self.__dict__[key] = value
          return
      setattr(self._view, key, value)
  def __len__(self):
      return len(self._view)
  def __getitem__(self, item):
      return self._view[item]

import metakit
storage = metakit.storage()
descr = 'entry[stem:S,category:S,id:I]'
view = storage.getas(descr)

vw = MyView(view)
print vw.keys()
# -> ['stem', 'category', 'id']
vw.append(("asdf", "bar", 1))
print len(vw)
# -> 1
print vw[0]
assert vw.has_key("stem")

Why is this useful? Well a user can actually have spaces inside a column name. You can actually retrieve the column name with getattr is as getattr(view, "my dog has fleas") but you couldn't do that with "row.my dog has fleas" for obvious reasons.



--
Brian Kelley                                  [EMAIL PROTECTED]
Whitehead Institute for Biomedical Research   617 258-6191


_______________________________________________ metakit mailing list - [EMAIL PROTECTED] http://www.equi4.com/mailman/listinfo/metakit

Reply via email to