No constructor overloading in Python - Disadvantage?
<p>I was going through DiveIntoPython and came across this:</p>

<blockquote>
  <p>Java and Powerbuilder support function overloading by argument list,
  i.e. one class can have multiple methods with the same name but a
  different number of arguments, or arguments of different types. Other
  languages (most notably PL/SQL) even support function overloading by
  argument name; i.e. one class can have multiple methods with the same
  name and the same number of arguments of the same type but different
  argument names. Python supports neither of these; it has no form of
  function overloading whatsoever. Methods are defined solely by their
  name, and there can be only one method per class with a given name. So
  if a descendant class has an <code>__init__</code> method, it always overrides the
  ancestor <code>__init__</code> method, even if the descendant defines it with a
  different argument list. And the same rule applies to any other
  method.</p>
</blockquote>

<p>Isn't this a major disadvantage that a subclass's <code>__init__</code> method will <em>always</em> override a superclass's <code>__init__</code> method? So if I'm initializing some variables and calling some functions in a class <code>class1</code>'s <code>__init__</code>, then I derive a subclass <code>class2(class1)</code> of it, I'd have to reinitialize all of <code>class1</code>'s variables and call those functions in <code>class2</code>'s <code>__init__</code>?</p>

<p>I'm pretty sure I'm misunderstanding all this, so it'd be great if someone clarifies this up.</p>
