Skip to content

Instantly share code, notes, and snippets.

@minlaxz
Created December 22, 2021 03:18
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save minlaxz/14147433153df6255efdf0542d8a3f3e to your computer and use it in GitHub Desktop.
Save minlaxz/14147433153df6255efdf0542d8a3f3e to your computer and use it in GitHub Desktop.
Method resolution order in Python - MRO
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