Created
December 22, 2021 03:18
-
-
Save minlaxz/14147433153df6255efdf0542d8a3f3e to your computer and use it in GitHub Desktop.
Method resolution order in Python - MRO
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Base(object): | |
def __init__(self): | |
print("Base init'ed") | |
class ChildA(Base): | |
def __init__(self): | |
print("ChildA init'ed") | |
Base.__init__(self) | |
class ChildB(Base): | |
def __init__(self): | |
print("ChildB init'ed") | |
super().__init__() | |
class UserDependency(Base): | |
def __init__(self): | |
print("UserDependency init'ed") | |
super().__init__() | |
class UserA(ChildA, UserDependency): | |
def __init__(self): | |
print("UserA init'ed") | |
super().__init__() | |
class UserB(ChildB, UserDependency): | |
def __init__(self): | |
print("UserB init'ed") | |
super().__init__() | |
>>> UserA() | |
UserA init'ed | |
ChildA init'ed | |
Base init'ed | |
<__main__.UserA object at 0x0000000003403BA8> | |
>>> UserB() | |
UserB init'ed | |
ChildB init'ed | |
UserDependency init'ed | |
Base init'ed | |
<__main__.UserB object at 0x0000000003403438> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment