Метод super()
просто находит следующий метод для вызова на основе MRO.
D.go()
вызывает B.go()
, который затем вызывает C.go()
, который печатает C
и возвращается к B.go()
, который печатает B
и, наконец, возвращается к D.go()
, который печатает D
Если вы ожидаете, что все методы go()
будут вызываться, вы должны раскомментировать вызов super()
в C.go()
.
Вы можете найти намного больше информация о вызовах MRO и super()
из собственного блога Guido