Why not open() in constructor body, and raise an exception here? I think that the client shouldn't have to check the success of the construction afterward.