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.