docs: def update_field(self, f, obj):
          """ update a field
  
          :param str f: name of field to be updated.
          :param obj: value of field to be updated.
          """
          n = self.get_private_name(f)
          if not hasattr(self, n):
              raise AttributeError('{0} is not in {1}'.format(n, self.__class__.__name__))
  
          setattr(self, n, obj)
          self.__origin_keys.add(f)