[Numpy-discussion] Questions about the array interface.
Scott Gilbert
xscottg at yahoo.com
Thu Apr 7 04:52:11 EDT 2005
--- "David M. Cooke" <cookedm at physics.mcmaster.ca> wrote:
> >
> > Good point, but a pain. Maybe they should be required, that way I
> > don't have to first check for the presence of '<' or '>', then check
> > if they have the right value.
>
> I'll second this. Pulling out more Python Zen: Explicit is better than
> implicit.
>
I'll third.
>
> This is a good point; all good protocols embed a version somewhere.
> Not doing it now could lead to grief/pain later.
>
> I'd suggest adding to __array_data__: If __array_data__ is None, then
> the array is implementing a newer version of the interface, and you'd
> either need to support that (maybe the new version uses
> __array_data2__ or something), or use the sequence protocol on the
> original object. The sequence protocol should definitely be safe all
> the time, whereas the buffer protocol may not. (Put it this way: I
> understand the sequence protocol well, but not the buffer one :-)
>
> That would also be a good argument for it existing, I think.
>
> Alternatively, we could add an __array_version__ attribute (required
> to exist, required to check) which is set to 1 for this protocol.
>
I like this, although I think having __array_data__ return None is
confusing. I think __array_version__ (or __array_protocol__?) is the
better choice. How about have it optional and default to 1? If it's
present and greater than 1 then it means there is something new going on...
Cheers,
-Scott
More information about the NumPy-Discussion
mailing list