Есть еще различие, связанное с mro.

class A(object):
def f(self):
return ‘A’

class B(A):
def f(self):
return super(B, self).f()+'B'

class C(A):
def f(self):
return super(C, self).f()+'C'

class D(B,C):
def f(self):
return super(D, self).f()+'D'


assert D().f() == ‘ACBD’
Заметтье, каждая функция вызывается всего лишь раз. Без всяких дополнительных усилий с моей стороны.