Instead of returning Tuple(...), I think this should return self.func(...).  With the current code, if someone creates a subclass of Tuple and they try to multiply it by an integer, they'll get a Tuple returned, whereas they probably want to get an instance of the subclass instead.  The same issue exists in __add__ and __radd__, but that's not an issue for this pull request.

On a different note, I would not have used isinstance here.  I would have instead called ``other = sympify(other)``, then checked ``other.is_integer``.  This would allow for eg. multiplying a Tuple by a symbolic value for later evaluation.  But I'm not sure if this is desirable anyway, and it would mean the logic in here would have to change to support it.  So it can probably stay as-is unless anyone else thoughts on it.

Otherwise, everything else in this patch looks good.