<p>What's the difference between:</p>

<pre><code>class Child(SomeBaseClass):
    def __init__(self):
        super(Child, self).__init__()
</code></pre>

<p>and:</p>

<pre><code>class Child(SomeBaseClass):
    def __init__(self):
        SomeBaseClass.__init__(self)
</code></pre>

<p>I've seen <code>super</code> being used quite a lot in classes with only single inheritance. I can see why you'd use it in multiple inheritance but am unclear as to what the advantages are of using it in this kind of situation.</p>

The benefits of
```
super()
```
in single-inheritance are minimal -- mostly, you don't have to hard-code the name of the base class into every method that uses its parent methods.
However, it's almost impossible to use multiple-inheritance without
```
super()
```
. This includes common idioms like mixins, interfaces, abstract classes, etc. This extends to code that later extends yours. If somebody later wanted to write a class that extended
```
Child
```
and a mixin, their code would not work properly.