superclass changes in the future one of the biggest downsides of this call in xthoughis its reliance on deep magicthough prone to changeit operates today by inspecting the call stack in order to automatically locate the self argument and find the superclassand pairs the two in special proxy object that routes the later call to the superclass version of the method if that sounds complicated and strangeit' because it is in factthis call form doesn' work at all outside the context of class' methodsuper "magicproxy object that routes later calls super(systemerrorsuper()no arguments class ( )def method(self)proxy super(print(proxyproxy act(self is implicit in super onlythis form has no meaning outside method show the normally hidden proxy object no argumentsimplicitly calls superclass methode(method(spam reallythis call' semantics resembles nothing else in python--it' neither bound nor unbound methodand somehow finds self even though you omit one in the call in single inheritance treesa superclass is available from self via the path self __class__ __bases__[ ]but the heavily implicit nature of this call makes this difficult to seeand even flies in the face of python' explicit self policy that holds true everywhere else that isthis call violates fundamental python idiom for single use case it also soundly contradicts python' longstanding eibti design rule (run an "import thisfor more on this rulepitfalladding multiple inheritance naively besides its unusual semanticseven in this super role applies most directly to single inheritance treesand can become problematic as soon as classes employ multiple inheritance with traditionally coded classes this seems major limitation of scopedue to the utility of mix-in classes in pythonmultiple inheritance from disjoint and independent superclasses is probably more the norm than the exception in realistic code the super call seems recipe for disaster in classes coded to naively use its basic modewithout allowing for its much more subtle implications in multiple inheritance trees the following illustrates the trap this code begins its life happily deploying super in single-inheritance mode to invoke method one level up from cclass ain python def act(self)print(' 'class bdef act(self)print(' ' advanced class topics