> it's always a subclass of np.integer so why is that wrong?

Because np.int32, np.int16, and np.int8 are also subclasses of np.integer. But if `address()` returned one of those it would be broken.