On Mon, Oct 29, 2018 at 4:31 PM Chris Barker <chris.barker@noaa.gov> wrote:
On Fri, Oct 26, 2018 at 7:12 PM, Travis Oliphant <teoliphant@gmail.com> wrote:
 
 agree that we can stop bashing subclasses in general.   The problem with numpy subclasses is that they were made without adherence to SOLID:  https://en.wikipedia.org/wiki/SOLID.  In particular the Liskov substitution principle:  https://en.wikipedia.org/wiki/Liskov_substitution_principle

...
 
did not properly apply them in creating np.matrix which clearly violates the substitution principle. 

So -- could a matrix subclass be made "properly"? or is that an example of something that should not have been a subclass?

The latter - changing the behavior of multiplication breaks the principle.

Ralf