OpenGL is a state machine. Setting the state in the constructor makes no sense, because the next time you're initializing a light it will be overridden by the constructor. Also you don't get an infinite number of lights in (fixed function) OpenGL.
You want something like this:
class Light:
...
setup(self, i):
glEnable(GL_LIGHT0 + i)
glLightfv(GL_LIGHT0 + 1, GL_POSITION, self.light_position)
....
And in the drawing function something like
glEnable(GL_LIGHTING)
for i,l in enumerate(lights):
l.setup(i)