Is it safe to call an overridden method from __init__?
<p>This is a follow-up from <a href="http://stackoverflow.com/questions/2898422/calling-an-overridden-method-from-a-parent-class-constructor">this question</a> - </p>

<p><em>Effective Java 2nd Edition, Item 17: Design and document for inheritance, or else prohibit it:</em></p>

<blockquote>
  <p>There are a few more restrictions that a class must obey to allow inheritance. Constructors must not invoke overridable methods, directly or indirectly. If you violate this rule, program failure will result. The superclass constructor runs before the subclass constructor, so the overriding method in the subclass will be invoked before the subclass constructor has run. If the overriding method depends on any initialization performed by the subclass constructor, the method will not behave as expected.</p>
</blockquote>

<p>Since we are only going to touch the initialization aspect of the <code>Java</code>'s constructor, I assume it's safe to compare <code>Java</code>'s constructor with <code>Python</code>'s <code>__init__</code> in this question.</p>

<p>I am guessing since in <code>Python</code> I have the flexibility to decide when to call (after initializing my current class' data attributes in this case) my ancestor' <code>__init__</code> as compared to <code>Java</code> where <code>super()</code> needs to be the first statement in a constructor' invocation, I might be safe in calling overridden methods from <code>__init__</code>?</p>

<p>If I am correct in guessing the aforementioned, wouldn't I as an ancestor class designer getting left at the mercy of my subclass designer? (if the subclass designer calls my <code>__init__</code> before he initializes his data attributes which will be used by one of his overridden methods, and I call that method, I result in program failure!)</p>
