It might be because the call to super().__init__ comes after the call to .cuda.
Here’s what I would try
class WrappedVariable(Variable):
    def __init__(self, data, *args, **kwargs):
        super(Variable, self).__init__(data, *args, **kwargs)
        print('before cuda', type(data))
        self.cuda(CUDA_ID)
        print('after cuda', type(data))