'Evaluating the field at a point or doing nothing.
If the argument is a ``Point`` instance, the field is evaluated at that
point. The field is returned itself if the argument is any other
object. It is so in order to have working recursive calling mechanics
for all fields (check the ``__call__`` method of ``Expr``).'

def __call__(self, *args):

    point = args[0]
    if ((len(args) != 1) or (not isinstance(point, Point))):
        return self
    coords = point.coords(self._coord_sys)
    return simplify(coords[self._index]).doit()
