class A(object): def say_hello(self): print 'A says hello' class B(A): def say_hello(self): super(B, self).say_hello() print 'B says hello' class C(A): def say_hello(self): super(C, self).say_hello() print 'C says hello' class D(B, C): def say_hello(self): super(D, self).say_hello() print 'D says hello' D().say_hello()
A says hello
C says hello
B says hello
D says hello
Объясните, пожалуйста, как код отрабатывает? По-моему представлению в классах нового стиля он должен запускать метод в D, затем исполнять super и запускать метод в B, там исполнять super и запускать метод в A. Исполнив метод в А дополнять его методом в В, затем дополнять методом в D. В итоге вывод должен быть:
A says hello
B says hello
D says hello
В чем я не прав?