I can't find any concrete examples of people saying what to do, and I actually think that we are overthinking this. My advice would be: Do something in the __init__ method if is something that is going to be done *always* for each object, this is precisely initializing it. Otherwise let the user call object methods.

And this is my last contribution to a never ending discussion ;-)