title: Difference between super() and calling superclass directly
body: <p>In Python 2.7 and 3, I use the following method to call a super-class's function:</p>
  
  <pre><code>class C(B):
      def __init__(self):
          B.__init__(self)
  </code></pre>
  
  <p>I see it's also possible to replace <code>B.__init__(self)</code> with <code>super(B, self).__init__()</code> and in python3 <code>super().__init__()</code>.</p>
  
  <p>Are there any advantages or disadvantages to doing this either way? It makes more sense to call it from <code>B</code> directly for me at least, but maybe there's a good reason where <code>super()</code> can only be used when using metaclasses (which I generally avoid).</p>