code: def _init_fields(self):
          
          fields = {}
          forms = {}
          sets = {}
  
          for name in dir(self):
              if name.startswith('_'):
                  continue
              field = getattr(self, name)
              is_field = isinstance(field, Field)
              is_form = isinstance(field, Form) or (
                  inspect.isclass(field) and issubclass(field, Form))
              is_set = isinstance(field, FormSet)
  
              if is_field:
                  field = copy(field)
                  field.name = self._prefix + name
                  field.form = self
                  if field.prepare is None:
                      field.prepare = getattr(self, 'prepare_' + name, None)
                  if field.clean is None:
                      field.clean = getattr(self, 'clean_' + name, None)
                  fields[name] = field
                  setattr(self, name, field)
              elif is_form:
                  forms[name] = field
              elif is_set:
                  field._name = self._prefix + name  # REALLY IMPORTANT
                  sets[name] = field
  
          self._fields = fields
          self._forms = forms
          self._sets = sets
docs: Creates the `_fields`, `_forms` asn `_sets` dicts.
  
          Any properties which begin with an underscore or are not `Field`,
          `Form` or `FormSet` **instances** are ignored by this method.