Multiple inheritance in Python? Make sure all parents run super():
In a Python child class with two parents, which __init__ runs?
Does Python allow for multiple inheritance? Yes: And so: C.__bases__ returns: (<class ‘__main__.A’>, <class ‘__main__.B’>)
In Python, super() searches the MRO until it finds a match:
Didn’t call super() __init__ in your Python class? Attributes normally set on the parent won’t be on the child!
The most common place we use super() in Python? __init__:
Misspelled the method you invoke via super() in a Python method? It’s a runtime error: We get: AttributeError: ‘super’ object has no attribute ‘y’
A Python method can invoke a method in the parent class with super(): super() doesn’t invoke the method. It’s a proxy on which you invoke the method you want.
If a Python subclass defines a method with the same name as the parent, the parent’s method isn’t invoked:
Thanks to ICPO/MRO, if a child Python class doesn’t define a method, the parent method will be invoked: