Method Resolution Order (MRO)
How Python resolves methods
Interview Relevant: Diamond problem
Method Resolution Order
Order in which Python looks for methods.
Code Examples
Understanding Method Resolution Order.
python
1class A: pass
2class B(A): pass
3class C(A): pass
4class D(B, C): pass
5
6# View MRO
7print(D.__mro__)
8# (<class 'D'>, <class 'B'>, <class 'C'>, <class 'A'>, <class 'object'>)
9
10print(D.mro()) # Same as list
11
12# C3 Linearization algorithm
13# - Children before parents
14# - Preserve order of parent classes
15# - Consistent ordering
16
17# MRO affects super()
18class A:
19 def method(self):
20 print("A")
21
22class B(A):
23 def method(self):
24 print("B")
25 super().method()
26
27class C(A):
28 def method(self):
29 print("C")
30 super().method()
31
32class D(B, C):
33 def method(self):
34 print("D")
35 super().method()
36
37D().method() # D, B, C, A