def METHOD_NAME(self, op, other):
    def _o2(x, y):
        try:
            return op(x, y)
        except ZeroDivisionError:
            return DataError("#DIV/0", traceback.format_exc())
        except Exception:
            return DataError("#ERR", traceback.format_exc())
    if isinstance(other, tuple):
        if len(other) != len(self):
            raise TypeError("tuples must have same length for %s" % op)
        return self.__class__(map(_o2, self, other))
    else:
        return self.__class__(_o2(z, other) for z in self)