Method Resolution Order (MRO) dans les classes de style nouveau ?

| | | | | |

Dans le livre Python in a Nutshell (2nd Edition) il y a un exemple qui utilise
des classes de style ancien pour montrer comment les méthodes sont résolues dans l'ordre de résolution classique et
comment est-ce différent avec la nouvelle commande.

J'ai essayé le même exemple en réécrivant l'exemple dans le nouveau style mais le résultat n'est pas différent de ce qui était obtenu avec les anciennes classes de style. La version python que j'utilise pour exécuter l'exemple est 2.5.2. Ci-dessous l'exemple :

class Base1(object): def amethod(self): print "Base1" class Base2(Base1): pass class Base3(object): def amethod(self): print "Base3" class Derived(Base2,Base3): pass instance = Derived() instance.amethod() print Derived.__mro__ 

L'appel instance.amethod() imprime Base1, mais selon ma compréhension du MRO avec nouveau style de classes, la sortie aurait dû être Base3. L'appel Derived.__mro__ affiche :

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

Je ne sais pas si ma compréhension du MRO avec le nouveau classes de style est incorrect ou que je fais une erreur stupide que je ne suis pas capable de détecter. S'il vous plaît, aidez-moi à mieux comprendre le MRO.