> 
> Anyway, back on topic - I'm having similar problems as Keith. It seems like 
> there isn't consistency on how different built-in functions treat 
> array_wrap/finalize/etc, or maybe I'm still confused.

Actually, that depends on the np function you need. Functions like np.std… 
first call the method of your class, and if it fails, call _method._std on your 
object. The call on __array_finalize__ shows up implicitly in the second case, 
I think, because of some recent (?) changes.
It used to be that the basic std function accepted only ndarrays. Now, 
_methods._std accepts any kind of subclass (it uses np.asanyarray)… So, np.std 
on a subclass that does not implement its std will return an instance of the 
subclass.
That's quite silly, IMHO. Why use asanyarray in that case ? If I wanted my 
subclass to return an instance of itself with std, I'd implement std as a 
method.  
Anyhow, Wes, in the current state of things, my understanding is that yes, you 
have to implement a std method like you suggest. I'd throw a copy=False, 
subok=False in np.array just in case, to make sure you work with a view of the 
underlying ndarray.
_______________________________________________
NumPy-Discussion mailing list
NumPy-Discussion@scipy.org
http://mail.scipy.org/mailman/listinfo/numpy-discussion

Reply via email to