code: def bind(self, **kwargs):
          '''
          creates a copy of the object without the
          cached results and with the given keyword
          arguments as properties.
          '''
          d = dict(self.__dict__)
          for k in d.keys():
              if k[0] == '_':
                  del d[k]
              elif k.startswith('obj_'):
                  d[k] = d[k].bind(**kwargs)
          d.update(kwargs)
          return self.__class__(**df bind(self, **kwargs):
          '''
          creates a copy of the object without the
          cached results and with the given keyword
          arguments as properties.
          '''
          d = dict(self.__dict__)
          for k in d.keys():
              if k[0] == '_':
                  del d[k]
              elif k.startswith('obj_'):
                  d[k] = d[k].bind(**kwargs)
          d.update(kwargs)
          return self.__class__(**d)
docs: creates a copy of the object without the
          cached results and with the given keyword
          arguments as properties.