Ordem de Resolução de Método (MRO) em classes de novo estilo?

| | | | | |

No livro Python in a Nutshell (2nd Edition) há um exemplo que usa
classes de estilo antigo para demonstrar como os métodos são resolvidos na ordem de resolução clássica e
como é diferente com a nova ordem.

Eu tentei o mesmo exemplo reescrevendo o exemplo em um novo estilo, mas o resultado não é diferente do que foi obtido com as classes de estilo antigo. A versão python que estou usando para executar o exemplo é 2.5.2. Abaixo está o exemplo:

class Base1(object): def amethod(self): print "Base1" class Base2(Base1): passe a classe Base3(objeto): def amethod(self): print "Base3" class Derived(Base2,Base3): passe instância = Derived() instance.amethod() print Derived.__mro__ 

A chamada instance.amethod() imprime Base1, mas de acordo com meu entendimento do MRO com novo estilo de classes a saída deveria ser Base3. A chamada Derived.__mro__ imprime:

(<class "__main__.Derived">, <class "__main__.Base2">, <class "__main__.Base1">, <class "__main__.Base3">, <type "object">)

Não tenho certeza se minha compreensão de MRO com novos style classes está incorreta ou que estou cometendo um erro bobo que não consigo detectar. Ajude-me a entender melhor o MRO.