Dans le livre Python en quelques mots (2ème édition) Il existe un exemple qui utilise
les anciennes classes pour montrer comment les méthodes sont résolues dans l'ordre de résolution classique et
en quoi la situation est-elle différente avec le nouvel ordre.
J'ai essayé le même exemple en le réécrivant dans le nouveau style, mais le résultat n'est pas différent de celui obtenu avec les classes de l'ancien style. La version de python que j'utilise pour exécuter l'exemple est la suivante 2.5.2. Voici un 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()
empreintes Base1
Mais d'après ce que j'ai compris du MRO avec le nouveau style de classes, le résultat aurait dû être le suivant Base3
. L'appel Derived.__mro__
empreintes :
(<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 les nouvelles classes de style est incorrecte ou si je fais une erreur stupide que je ne suis pas en mesure de détecter. Merci de m'aider à mieux comprendre le MRO.