I believe that __init__ should always return None (what functions do silently when they don't find a return clause). Leave the error to propagate, should there be any. Catch it in the calling code.