Introduction
Method Resolution Order (MRO) decides the order in which Python looks for methods in classes when you use inheritance. It helps Python know which method to run when multiple classes have methods with the same name.
Jump into concepts and practice - no test required
class Child(Parent1, Parent2): pass # To see MRO: print(Child.__mro__)
class A: def greet(self): print('Hello from A') class B(A): def greet(self): print('Hello from B') class C(B): pass print(C.__mro__)
class X: def greet(self): print('Hello from X') class Y: def greet(self): print('Hello from Y') class Z(X, Y): pass print(Z.__mro__)
class A: def greet(self): print('Hello from A') class B(A): def greet(self): print('Hello from B') class C(A): def greet(self): print('Hello from C') class D(B, C): pass print('MRO of D:', D.__mro__) obj = D() obj.greet()
MyClass in Python?__mro__ attribute and mro() method to check MRO.MyClass.__mro__ is a tuple showing MRO; MyClass.mro() is a method returning a list. print(MyClass.__mro__) uses __mro__ correctly with print.class A:
def greet(self):
return 'Hello from A'
class B(A):
def greet(self):
return 'Hello from B'
class C(A):
def greet(self):
return 'Hello from C'
class D(B, C):
pass
print(D().greet())class X:
def method(self):
return 'X'
class Y:
def method(self):
return 'Y'
class Z(X, Y):
def method(self):
return super().method()
print(Z().method())F? class A: pass class B(A): pass class C(A): pass class D(B, C): pass class E(C, B): pass class F(D, E): pass