¿Cómo pasa Python los parámetros __init__ con herencia múltiple?

Tengo este código, que muestra un patrón de diamante clásico:

class A:
    def __init__( self, x ):
        print( "A:" + x )


class B( A ):
    def __init__( self, x ):
        print( "B:" + x )
        super().__init__( "b" )


class C( A ):
    def __init__( self, x ):
        print( "C:" + x )
        super().__init__( "c" )


class D( B, C ):
    def __init__( self ):
        super().__init__( "d" )


d = D()

La salida es:

B:d
C:b
A:c
B:d tiene sentido, ya queD deriva deB.LosA:c Casi me sale, aunque igualmente pude verA:b.Sin embargo, elC:b bit no tiene sentido:C no deriva deB.

¿Podría alguien explicarme?

Preguntas comoest lamentablemente no mencione los parámetros.

Respuestas a la pregunta(3)

Su respuesta a la pregunta