[Numpy-discussion] numarraycore

Todd Miller jmiller at stsci.edu
Fri May 7 07:24:02 CDT 2004


On Thu, 2004-05-06 at 19:16, Colin J. Williams wrote:
> 
> Todd Miller wrote:
> > On Wed, 2004-05-05 at 18:59, Colin J. Williams wrote:
> >   
> > > Todd Miller wrote:
> > >     
> > > > On Wed, 2004-05-05 at 16:27, Colin J. Williams wrote:
> > > >   
> > > >       
> > > > > It would help to have some documentation on the purpose and usage of the 
> > > > > class UsesOpPriority and its variable op_priority.
> > > > >     
> > > > >         
> > > Todd,
> > > 
> > > Thanks for this, perhaps it could be added to the pdf .  I like the
> > > basic idea.
> > >     
> > OK.  What is it you want to do?
> Re: Above.
>    Document whatever you decide to do with UsesOpPriority

I put more comments in numarraycore.   If a lot of people want to
subclass NumArray, it will probably require more discussion because
UsesOpPriority is a limited scheme.  For now,  MaskedArrays do mostly
what I want and it should work for PyMatrix as well.

> Re: Below.
>   Access the methods of NumArray in a Pythonic manner.
>   Subclassing from UsesOpPriority doesn't appear to permit that.

No, it doesn't.  

> >   
> > > > The basic idea was that NumArray subclasses which want to use numarray
> > > > operators would:
> > > > 
> > > > 1.  subclass from UsesOpPriority 
> > > >       
> > > UsesOpPriority has no methods and thus, to access the methods of
> > > NumArray, it would appear to be necessary to subclass from NumArray.
> > >     
> > For limited but important uses (e.g. masked array) subclassing from
> > NumArray is not necessary;  I'd summarize these as the cases where a
> > class wants to take control of operators from NumArray.
> >   
> Thus, if masked array require use of the UsesOpPrioity, then direct
> subclassing from there would appear to make sense.  
> 
> However, where one wishes to use some of the NumArray methods, then,
> contrary to 1, above, subclassing from NumArray should, I suggest, be
> the way to go.

That's true... I overlooked the fact that UsesOpPriority is inherited
automatically by NumArray subclasses.  Sorry for the confusion.

> >   
> > > > 2.  set a class level op_priority > 0. 
> > > > 
> > > > 
> > > > NumArrays have op_priority 0,  higher priorities are given "precedence".
> > > > 
> > > > 
> > > > Thus, given A=NumArray(...) and B=NumArraySubclass(...), and
> > > > A.op_priority==0 and B.op_priority==1, then:  
> > > > A+B would execute as B.__radd__(A) rather than A.__add__(B) and hence
> > > > the type(A+B) could be NumArraySubclass rather than NumArray.  Different
> > > > subclasses could use higher or lower op_priorities to perform the same
> > > > kind of operator resolution among themselves.
> > > >   
> > > >       
> > > I wonder about the desirability of having different levels of priority
> > > for the same level of subclassing and am puzzled that a float variable
> > > is used for the priority.
> > >     
> > Different levels of priority for the same level of sub-classing makes
> > sense to me:  it let's you answer the question "What's the result type
> > of a PyMatrix instance + a SomeOtherSubclass instance?"
> >   
> I agree, there is the possibility that one would wish to evaluate such
> expressions right to left and 
> the priority provides a way of doing this.
> > A float enables insertions of new members into the middle of an existing
> > order.
> >   
> True.  I hope that there will be a database somewhere of all the
> various values for op_priority

Here's the database:  :-)

class                  op_priority

NumArray               0
MaskedArray            1


Regards,
Todd








More information about the Numpy-discussion mailing list