Ok, I expanded on what you wrote and ended up with this working(kinda):
lerp(self.opacity,self.opacity-100,5*dt)
It seems a bit 'hacky' but it works. The problem is that if your using smaller values than just 100. Like for example 10, then it'll just keep getting greater and greater. Seems so simple, and yet it wont work the way it should.
I don't know why just using integers isn't working.