title: implement __rmul__ from both sides, python
body: <p>I there a way to implement <strong>rmul</strong> so that it works in both directions?
  I'm using <strong>mul</strong> to multiply two vectors a and b of class R3 element by element. Later I want to be able to multiply each element by a number with an operator like 2*a and a*2.</p>
  
  <pre><code>class R3(object):
      def __init__(self,an_array):
          self.a = an_array   # of length 3
          self.s = 3 
  
      def __mul__(self,that):
          tmp = [0]*self.s
          for i in range(self.s):
              tmp[i] = self.a[i]*that.a[i]
          return self.__class__(tmp)
  
      def __rmul__(self,that):
          tmp = [0]*self.s
          for i in range(self.s):
              tmp[i] = self.a[i]*that
          return self.__class__(tmp)      
  </code></pre>
  
  <p>so this works fine for a * b, b * a, 2*a, but not a*2!  </p>