I've seen a public/pseudo-private pattern like this before.  _init_app is the "real" functionality here, while init_app is just a public wrapper for it.  I think there are things like this actually in core Python (multiprocessing, if memory serves, at least).