
Programmation orientée objet 117
Le modèle MRO est utilisé à la fois par l’héritage et par l’appel
super()
, qui est une fonction intégrée invoquant toujours une classe
suivante sur le MRO (en fonction du point d’appel), qui n’est p as
forcément une superclasse, mais peut être utilisée pour d iffuser les
appels de méthodes à travers une arborescence de classes en visitant
chaque classe une seule fois.
Exemple : sans graphe en diamant
class D: attr = 3 # D:3 E:2
class B(D): pass # | |
class E: attr = 2 # B C:1
class C(E): attr = 1 # \ /
class A(B, C): pass # A
X = A() # |
print(X.attr) # X
# DFLR = [X, A, B, D, C, E]
# MRO = [X, A, B, D, C, E, objet]
# Affiche ...