[Numpy-discussion] numarray unfriendly to user defined types

Todd Miller jmiller at stsci.edu
Tue Sep 23 03:35:01 CDT 2003


On Mon, 2003-09-22 at 19:27, Tim Hochberg wrote:

> I actually have no idea how you plan to make keyword arguments work 
> here, perhaps you could explain that in more detail. Metaclasses are 
> overkill, but a mixin, marker class could be used. That is, when 
> designing a class for use with numarray, one would derive a class from a 
> marker class in numarray::
> 
>    class MyArrayLikeClass(numarray.DeferToMe):
>        ....
> 
> Hmmm. That's not too bad. Todd, what do you think about using this logic::
> 
>     def __mul__(self, operand):
>         if isinstance(operand, DeferToMe):
>             operand.__rmul__(self)
>         else:
>             self.__mul__(operand)
> 
> 

I like the core idea a lot.  My only doubt is whether forcing the use of
inheritance is appropriate / a good thing.  We might also consider
spelling it like:

class MyArrayLikeClass:
	_numarray_defer_to_me = True

class NumArray:
	def __mul__(self, operand):
		if hasattr(operand, "_numarray_defer_to_me"):
			return operand.__rmul__(self)
		else:	
			return ufunc.multiply(self, operand)

> The only case where I see a potential problem is an old-style 
> C-extenstion that can't be subclassed. I think that might be a case of 
> YAGNI though. 

Sounds YAGNI to me.

> Avoiding registration is appealing.

Good to have this seconded.

> -tim
> 

All in all, great ideas!

Todd

-- 
Todd Miller <jmiller at stsci.edu>





More information about the Numpy-discussion mailing list