namespace issue, Python vs numpy min/max problem
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Sat Nov 13 17:38:46 EST 2010
On Sat, 13 Nov 2010 11:41:09 -0800, dmitrey wrote:
> hi all,
> I have the following problem:
> I have overloaded "max" function in my module (FuncDesigner); it works
> like following:
> if some data in arguments is of type "oofun" then my function works,
> elseware numpy.max() is used.
>
> Now the problem:
> suppose someone writes
> from FuncDesigner import *
> ...
> a = max(0,1)
>
> so it calls FuncDesigner, it calls numpy.max and result is 0 (because in
> numpy it means "max of array with single element 0 along 1st axis").
> But if user has not imported numpy then he expected calling ordinary
> Python max and thus result to be "1".
That's not your problem, that's the caller's problem. He shouldn't be
calling import * unless he wants to import everything in your module
directly into his namespace.
If the caller said to you:
"After executing len = x, I can't access the built-in len function any
more, can you change x so that it magically tells when I want the built-
in behaviour and does that?"
you'd probably tell him to get lost. Doing import * is no different. It
only becomes your problem if you have advised people that the right way
to use your module is with import *.
> Is there any way to get rid of the problem (somehow automatically
> determine which func should be used - numpy or Python max)? The same
> issue with "min", but they are equivalent, of course.
Automatically? No.
--
Steven
More information about the Python-list
mailing list