on related notethe universal deployment expectations of super may make it difficult for single class to replace (overridean inherited method altogether not passing the call higher with super--intentionally in this case--works fine for the class itselfbut may break the call chain of trees it' mixed intothereby preventing methods elsewhere in the tree from running consider the following treeclass adef method(self)print(' method')super(method(class ( )def method(self)print(' method')super(method(class cdef method(self)print(' method'no supermust anchor the chainclass (bc)def method(self)print(' method')super(method( ( method( method method method dispatch to all per the mro automatically method method replacement here breaks the super modeland probably leads us back to the traditional formwhat if class needs to replace super' default entirelyclass ( )def method(self)print(' method'drop super to replace ' method class (bc)def method(self)print(' method')super(method( ( method( method method but replacement also breaks the call chain class (bc)def method(self)print(' method') method(self) method(selfd(method( method method method it' back to explicit calls once againthe problem with assumptions is that they assume thingsalthough the assumption of universal routing might be reasonable for constructorsit would also seem to conflict with one of the core tenets of oop--unrestricted subclass customization this might suggest restricting super usage to constructorsbut even these might sometimes warrant replacementand this adds an odd special-case requirement for one specific context tool that can be used only for certain categories of methods might be seen by some as redundant--and even spuriousgiven the extra complexity it implies advanced class topics