docs: def set(self, values):
          """ set new values (values have to be iterable)
          """
          if not hasattr(values, '__iter__') or isinstance(values, string_types):
              raise SchemaError("Wrong value '%s' for field '%s'" % (values, self._ftype))
          # check data are valid before deleting the data
          # prevents losing data if wrong type is passed
          values = [self._ftype.validate(v) for v in values]
          del self[:]
          for v in values:
              list.append(self, v)