[SciPy-dev] def __array__

Robert Kern robert.kern at gmail.com
Tue Aug 18 11:48:41 EDT 2009


On Tue, Aug 18, 2009 at 08:43, David Goldsmith<d_l_goldsmith at yahoo.com> wrote:
> Is this in the compiled C code also?
>
> Someone (I think it was Pierre) recently asked me if I checked the code to see how something worked.  I "took the fifth," but I feel I needn't have: the real reason I haven't made a habit of it recently is (and maybe this is just due to the late stage we're at in the doc game), more often than not, the explanation I seek is buried in the compiled C code, and thus unfindable by me, at least with the technology I have at my disposal, and thus I'm at the "mercy" of the list for various explanations.
>
> To wit: trying to flesh out the details of how chararray.argsort works - I go examine the code and all it does is call self.__array__.  chararray doesn't appear to have an __array__ method, and I can't find one in ndarray either, so after checking all other leads, I finally remember that the main def of ndarray is in the compiled C code.  What's an innocent to do?

[~]$ cd ~/svn/numpy/numpy/core/src
[src]$ grep -r __array__ .
....
# AHA!
./multiarray/methods.c:    {"__array__", (PyCFunction)array_getarray,
....
[src]$ grep -n array_getarray multiarray/methods.c
793:array_getarray(PyArrayObject *self, PyObject *args)
2032:    {"__array__", (PyCFunction)array_getarray,


And there you can see that ndarray.__array__ implementation is on line
793 of multiarray/methods.c .

-- 
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless
enigma that is made terrible by our own mad attempt to interpret it as
though it had an underlying truth."
  -- Umberto Eco



More information about the SciPy-Dev mailing list