MRO (Method Resolution Order) Demo

Show how Python resolves methods in a multiple inheritance hierarchy using MRO.

PythonIntermediate
Python
# Program to demonstrate method resolution order (MRO)

class A:
    def who_am_i(self):
        print("I am A")


class B(A):
    def who_am_i(self):
        print("I am B")


class C(A):
    def who_am_i(self):
        print("I am C")


class D(B, C):
    pass


d = D()
d.who_am_i()
print(D.mro())

Output

I am B
[<class '__main__.D'>, <class '__main__.B'>, <class '__main__.C'>, <class '__main__.A'>, <class 'object'>]

D inherits from B and C; Python uses the MRO list to decide which 'who_am_i' implementation to call.