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.


Demitri Muna

Department of Astronomy
Le Ohio State University