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

AI Tutor

Ask about the topic

Sign in Required

Please sign in to use the AI tutor

Sign In