title: How to (or why not) call unicode.__init__ from subclass
body: <p>I've encountered a situation where subclassing unicode results in Deprecation Warnings on Python prior to 3.3 and errors on Python 3.3:</p>
  
  <pre><code># prove that unicode.__init__ accepts parameters
  s = unicode('foo')
  s.__init__('foo')
  unicode.__init__(s, 'foo')
  
  class unicode2(unicode):
      def __init__(self, other):
          super(unicode2, self).__init__(other)
  
  s = unicode2('foo')
  
  class unicode3(unicode):
      def __init__(self, other):
          unicode.__init__(self, other)
  
  s = unicode3('foo')
  </code></pre>
  
  <p>Curiously, the warnings/errors don't occur in the first three lines, but instead occur on lines 8 and 14. Here's the output on Python 2.7.</p>
  
  <pre><code>&gt; python -Wd .\init.py
  .\init.py:8: DeprecationWarning: object.__init__() takes no parameters
    super(unicode2, self).__init__(other)
  .\init.py:14: DeprecationWarning: object.__init__() takes no parameters
    unicode.__init__(self, other)
  </code></pre>
  
  <p>The code is simplified to exemplify the issue. In a real-world application, I would perform more than simply calling the super <code>__init__</code>.</p>
  
  <p>It appears from the first three lines that the unicode class implements <code>__init__</code> and that method accepts at least a single parameter. However, if I want to call that method from a subclass, I appear to be unable to do so, whether I invoke <code>super()</code> or not.</p>
  
  <p>Why is it okay to call <code>unicode.__init__</code> on a unicode instance but not on a unicode subclass? What is an author to do if subclassing the unicode class?</p>