That's how it works in python:

"""
Note: If the right operand's type is a subclass of the left operand's type and 
that subclass provides the reflected method for the operation, this method will 
be called before the left operand's non-reflected method. This behavior allows 
subclasses to override their ancestors' operations.
"""
http://docs.python.org/2/reference/datamodel.html#emulating-numeric-types

Note that matrix is a subclass of ndarray.
Also note that __mul__ can return NotImplemented, in which case again the 
method of rhs argument will be used.

Eugene

-----Original Message-----
From: [email protected] 
[mailto:[email protected]] On Behalf Of Will Lee
Sent: Friday, June 07, 2013 12:30 PM
To: Discussion of Numerical Python
Subject: [Numpy-discussion] What's the difference between calling __mul__ and *?

Can somebody tell me why these operations are not the same in numpy?

In [2]: a = numpy.array([1, 2, 3.])

In [4]: matrix = numpy.matrix([[1, 2, 3.], [4, 5, 6], [7, 8, 9]])

In [5]: a.__mul__(matrix)

matrix([[  1.,   4.,   9.],

        [  4.,  10.,  18.],

        [  7.,  16.,  27.]])

In [6]: a * matrix

matrix([[ 30.,  36.,  42.]])


Essentially I'm trying to extend from numpy.ndarray.  From my subclass
__mul__ I'd like to call the parent's __mul__ method.  I ran into
problem when I'm trying to call super(SubArrayClass, self).__mul__()
method when working with a matrix.  I also can't think of a way to use
operator.mul() due to the subclass nature.  Is there any way to make
this work?

Any help is greatly appreciated.

Thanks,

Will
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion
This email is confidential and subject to important disclaimers and
conditions including on offers for the purchase or sale of
securities, accuracy and completeness of information, viruses,
confidentiality, legal privilege, and legal entity disclaimers,
available at http://www.jpmorgan.com/pages/disclosures/email.  
_______________________________________________
NumPy-Discussion mailing list
[email protected]
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to