
Tim Hochberg wrote:
After a fashion anyway. I implemented the simplest thing that could possibly work and I've left out some stuff that even I think we need (docstring, repr and str). Still it exists, ndarray inherits from it and some stuff seems to work automagically.
import numpy as n ba = n.basearray([3,3], int, n.arange(9)) ba <numpy.basearray object at 0x00B29690> a = asarray(ba) a array([[0, 1, 2], [3, 4, 5], [6, 7, 8]]) a + ba array([[ 0, 2, 4], [ 6, 8, 10], [12, 14, 16]]) isinstance(a, n.basearray) True type(ba) <type 'numpy.basearray'> type(a) <type 'numpy.ndarray'> len(dir(ba)) 19 len(dir(a)) 156
Travis: should I go ahead and check this into the trunk? It shouldn't interfear with anything. The only change to ndarray is the tp_base, which sets up the inheritance.
I say go ahead. We can then all deal with it there and improve upon it. The ndarray used to inherit from another array and things worked. Python's inheritance in C is actually quite slick. Especially for structural issues. I agree that the basearray should have minimal operations (I would not even define several of the protocols for it). I'd probably only keep the buffer and mapping protocol but even then probably only a simple mapping protocol (i.e. no fancy-indexing) that then gets enhanced by the ndarray. Thanks for the work. -Travis