[PYTHON MATRIX-SIG] Finalized 0.3 interface (hopefully)
Jim Fulton, U.S. Geological Survey
jfulton@usgs.gov
Fri, 19 Jan 1996 11:17:33 -0500
On Jan 19, 10:43am, James Hugunin wrote:
> Subject: [PYTHON MATRIX-SIG] Finalized 0.3 interface (hopefully)
>
> Well, the comments on my previous post seem to have fallen off, so
> I'll try to summarize again and see if everybody's more or less happy.
(snip)
> The two special data members "__array__", and "__return_constructor__"
> will be supported for python objects that want to pretend to be an
> array.
After thinking about this a bit, I'm quite comformable with the
__array__ member idea, because there is a precedent with __float__,
__int__, and __long__. However, I have a *strong* opinion that
__array__ should be a member *function* that returns an instance as an
array. This is in keeping with __float__, __long__, etc. If a
user-defined type wants to store it's data in an array data member and
return the member, it can, but other user-defined classes may want to
compute and return array data on demand.
I would also recomment that the __array__ member function should have
an optional type code argument so that an extension that wants, say, a
double precision array can request one.
With an __array__ member function, I could, for example, immagine database
table objects that extracted their numeric data as an array on demand.
This could be quite useful.
I'm not so comfortable with the __return_constructor__ idea. It seems
to only make sense for single-argument functions. I have an alternate
proposal. Suppose that certain functions allowed an optional
(keyword?) argument that provided this constructor. So, for example,
instead of:
bar=sin(foo)
where bar and foo are both Spams (e.g. Arrays) you would have:
bar=sin(foo,Spam)
Now, you don't want to have to type ",Spam" everytime, not because you
don't like typing, but because you don't want the clutter, so you
define a "sin" method in Spam:
def sin(self): return sin(self,self.class)
so then you could do:
bar=foo.sin()
I realize that this is not quite as pretty as the first version (or is
it?), but it feels cleaner overall to me. In the case of
multi-parameter functions, it will be clear which object (the
reciever of the message) determines the return type.
(snip)
> One last question on installation:
>
> I plan to package this up as an addition to the standard python
> distribution, therefore, installation will consist of adding files to
> Modules, Lib, and Include. Does this strike anybody as an
> unreasonable thing to do?
For now, it's OK, but the released version should be a stand-alone module.
Jim
=================
MATRIX-SIG - SIG on Matrix Math for Python
send messages to: matrix-sig@python.org
administrivia to: matrix-sig-request@python.org
=================