def _element_constructor_(self, x): """ Convert an element into this quotient space `V/W` if there is a way to make sense of it. An element converts into self if it can be converted into `V`, or if not at least if it can be made sense of as a list of length the dimension of self. EXAMPLES: We create a 2-dimensional quotient of a 3-dimension ambient vector space:: sage: M = QQ^3 / [[1,2,3]] A list of length 3 converts into ``QQ^3``, so it converts into `M`:: sage: M([1,2,4]) #indirect doctest (-1/3, -2/3) sage: M([1,2,3]) (0, 0) A list of length 2 converts into M, where here it just gives the corresponding linear combination of the basis for `M`:: sage: M([1,2]) (1, 2) sage: M.0 + 2*M.1 (1, 2) Of course, elements of ``QQ^3`` convert into the quotient module as well. Here is a different example:: sage: V = QQ^3; W = V.span([[1,0,0]]); Q = V/W sage: Q(V.0) (0, 0) sage: Q(V.1) (1, 0) sage: Q.0 (1, 0) sage: Q.0 + V.1 (2, 0) Here we start with something that is over ZZ, so it canonically coerces into ``QQ^3``, hence into ``self``:: sage: Q((ZZ^3)([1,2,3])) (2, 3) """ if isinstance(x, self.element_class) and x.parent() is self: return x if isinstance(x, (list, tuple)) and len(x) == self.__domain.rank(): return self.__quo_map(self.__domain(x)) return FreeModule_ambient_field._element_constructor_(self, x)