súper confuso Python herencia múltiple super ()

Estaba jugando con la herencia múltiple en Python y me encuentro con una situación que no puedo entender cómo sucedió.

Aquí está el diseño de la herencia:

    A       F
  /   \     |
 B     C    |   
  \    |   /
    \  |  /   
       D

El diamante ABCD que todo el mundo conoce. Además de una clase extra "F", la tiro por diversión.

Aquí está el código:

class A(object):
    def foo(self, call_from):
        print "foo from A, call from %s" % call_from
        super(A, self).foo("A")

class B(A):
    def foo(self, call_from):
        print "foo from B, call from %s" % call_from
        super(B, self).foo("B")

class C(A):
    def foo(self, call_from):
        print "foo from C, call from %s" % call_from
        super(C, self).foo("C")

class F(object):
    def foo(self, call_from):
        print "foo from F, call from %s" % call_from

class D(B, C, F):
    def foo(self):
        print "foo from D"
        super(D, self).foo("D")

salida:

>>> d = D()
>>> d.foo()
foo from D
foo from B, call from D
foo from C, call from B
foo from A, call from C
foo from F, call from A

El orden de resolución del método:

>>> D.__mro__
(<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class '__main__.F'>, <type 'object'>)
foo from C, call from B en lugar defoo from C, call from Dfoo from F, call from A simplemente me tira de ...

Parece que elsuper() están encadenados de acuerdo con el orden de resolución del método e ignoran la relación entre clases, pero no estoy seguro.

¿Puede alguien indicarme la dirección correcta para entender este comportamiento?

Por favor, tenga en cuenta que estoy tratando de entender el idioma en sí. No tratar de resolver un problema práctico. Así que no tengo un caso de uso para esto. Pero será bueno si alguien puede señalar un caso de uso :)

ACTUALIZAR:

Para resumir: super () simplemente le informará qué hay al lado de la base de llamadas en el mro. No es necesario el padre. Mientras que mro construyó una base en la jerarquía de herencia, mro en sí no es la jerarquía de herencia.

Respuestas a la pregunta(2)

Su respuesta a la pregunta