<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def FromType(ftype):
 """ DocField subclasses factory, creates a convenient field to store data from a given Type. attribute precedence : * ``|attrs| > 0`` (``multi`` and ``uniq`` are implicit) => VectorField * ``uniq`` (``multi`` is implicit) => SetField * ``multi`` and ``not uniq`` => ListField * ``not multi`` => ValueField :param ftype: the desired type of field :type ftype: subclass of :class:`.GenericType` """

        if ftype.attrs is not None and len(ftype.attrs):
            return VectorField(ftype)
        elif ftype.uniq:
            return SetField(ftype)
        elif ftype.multi:
            return ListField(ftype)
        else:
            return ValueField(ftype)