In general, the super keyword can be used to call overridden methods, access hidden fields or invoke a superclass's constructor. Super() lets you avoid referring to the base class explicitly, which can be nice But the main advantage comes with multiple inheritance, where all sorts of fun stuff can happen. The one with super has greater flexibility The call chain for the methods can be intercepted and functionality injected. In fact, multiple inheritance is the only case where super() is of any use
I would not recommend using it with classes using linear inheritance, where it's just useless overhead. 'super' object has no attribute '__sklearn_tags__' This occurs when i invoke the fit method on the randomizedsearchcv object I attempted to tune the hyperparameters of an xgbregressor. As for chaining super::super, as i mentionned in the question, i have still to find an interesting use to that For now, i only see it as a hack, but it was worth mentioning, if only for the differences with java (where you can't chain super).
I found this example of code where super.variable is used What is the difference between list< I used to use list< Extends t>, but it does not allow me to add elements to it list.add (e), whereas the li. The automatic insertion of super () by the compiler allows this Enforcing super to appear first, enforces that constructor bodies are executed in the correct order which would be
If we're using a class method, we don't have an instance to call super with Fortunately for us, super works even with a type as the second argument Which is exactly what python tells me is not possible by saying that do_something () should be called with an instance of b.
OPEN