super() does not always return a proxy for the parent class. Instead, it returns a proxy for the next class in MRO. In single-inheritance there is no difference between MRO and the inheritance chain. In multiple-inheritance, MRO may result in a class on the other inheritance chain instead.