Порядок разрешения методов (MRO) в классах нового стиля?

| | | | | |

В книге Python in a Nutshell (2nd Edition) есть пример, в котором используются
классы старого стиля, чтобы продемонстрировать, как методы разрешаются в классическом порядке разрешения и
как это происходит. отличается от нового порядка.

Я попробовал тот же пример, переписав пример в новом стиле, но результат ничем не отличается от того, что было получено с классами в старом стиле. Версия Python, которую я использую для запуска примера, — 2.5.2. Ниже приведен пример:

class Base1(object): def amethod(self): print Класс "Base1" Base2(Base1): передать класс Base3(объект): def amethod(self): напечатать класс "Base3" Производный(Base2,Base3): передать instance = Derived() instance.amethod() напечатать Derived.__mro__ 

Вызов instance.amethod() печатает Base1, но согласно моему пониманию MRO с новый стиль классов вывод должен был быть Base3. Вызов Derived.__mro__ выводит:

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

Я не уверен, правильно ли я понимаю MRO с новыми классы стиля неверны или что я делаю глупую ошибку, которую не могу обнаружить. Пожалуйста, помогите мне лучше понять MRO.