def _element_constructor_(self, *x, **kwds): r""" Construct an element of ``self``. INPUT: - element of a compatible toric object (lattice, sublattice, quotient) or something that defines such an element (list, generic vector, etc.). OUTPUT: - :class:`toric lattice quotient element <ToricLattice_quotient_element>`. EXAMPLES:: sage: N = ToricLattice(3) sage: Ns = N.submodule([N(2,4,0), N(9,12,0)]) sage: Q = N/Ns sage: x = Q(1,2,3) # indirect doctest sage: x N[1, 2, 3] sage: type(x) <class 'sage.geometry.toric_lattice.ToricLattice_quotient_with_category.element_class'> sage: x is Q(x) True sage: x.parent() is Q True sage: x == Q(N(1,2,3)) True sage: y = Q(3,6,3) sage: y N[3, 6, 3] sage: x == y True """ if len(x) == 1 and (x[0] not in ZZ or x[0] == 0): x = x[0] if parent(x) is self: return x try: x = x.lift() except AttributeError: pass try: return self.element_class(self, self._V(x), **kwds) except TypeError: return self.linear_combination_of_smith_form_gens(x)