Method Resolution Order (MRO) in classi di nuovo stile?

| | | | | |

Nel libro Python in a Nutshell (2nd Edition) c'è un esempio che usa
classi vecchio stile per dimostrare come i metodi vengono risolti nell'ordine di risoluzione classico e
come è diverso con il nuovo ordine.

Ho provato lo stesso esempio riscrivendo l'esempio in un nuovo stile ma il risultato non è diverso da quello ottenuto con le classi vecchio stile. La versione python che sto usando per eseguire l'esempio è 2.5.2. Di seguito è riportato l'esempio:

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

La chiamata instance.amethod() stampa Base1, ma secondo la mia comprensione dell'MRO con nuovo stile di classi l'output dovrebbe essere Base3. La chiamata Derived.__mro__ stampa:

(<class "__main__.Derived">, <class "__main__.Base2">, <class "__main__.Base1">, <class "__main__.Base3">, <digita "oggetto">)

Non sono sicuro di aver compreso l'MRO con new le classi di stile non sono corrette o che sto facendo un errore sciocco che non sono in grado di rilevare. Per favore aiutami a capire meglio l'MRO.