This was intentional, as `float(float('3.5'))` will create another object and allocate a bit more memory, then deallocate it as soon as this method returns. The isinstance check is cheaper.