[Numpy-discussion] Numpy 'None' comparison FutureWarning
efiring at hawaii.edu
Sun Sep 21 17:19:56 EDT 2014
On 2014/09/21, 11:10 AM, Demitri Muna wrote:
> I just encountered the following in my code:
> FutureWarning: comparison to `None` will result in an elementwise object
> comparison in the future.
> I'm very concerned about this. This is a very common programming pattern
> (lazy loading):
> class A(object):
> def __init__(self):
> self._some_array = None
> def some_array(self):
> if self._some_array == None:
> # perform some expensive setup of array
> return self._some_array
> It seems to me that the new behavior will break this pattern. I think
> that redefining the "==" operator is a little too aggressive here. It
> strikes me as very nonstandard and not at all obvious to someone reading
> the code that the comparison is a very special case for numpy objects.
> Unless there's some aspect I'm missing here, I think an element-wise
> comparator should be more explicit.
I think what you are missing is that the standard Python idiom for this
use case is "if self._some_array is None:". This will continue to work,
regardless of whether the object being checked is an ndarray or any
other Python object.
> Demitri Muna
> Department of Astronomy
> Le Ohio State University
> NumPy-Discussion mailing list
> NumPy-Discussion at scipy.org
More information about the NumPy-Discussion