On 2014/09/21, 11:10 AM, Demitri Muna wrote: > Hi, > > 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 > > @property > 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. Eric > > Cheers, > Demitri > > _________________________________________ > Demitri Muna > > Department of Astronomy > Le Ohio State University > > http://trillianverse.org > http://scicoder.org > > > > > > _______________________________________________ > NumPy-Discussion mailing list > NumPy-Discussion@scipy.org > http://mail.scipy.org/mailman/listinfo/numpy-discussion > _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion