On Sun, Sep 30, 2012 at 2:37 PM, Steven D'Aprano <steve+comp.lang.pyt...@pearwood.info> wrote: > Which is exactly my point -- you can't call the superclass "just in case" > it changes, because you don't know what arguments the new superclass or > classes expect. You have to tailor the arguments to what the parent > expects, and even whether or not you have to call super at all.[1] > > super() is not some magic command "don't bother me with the details, just > make method overriding work". You have to actually think about what you > are overriding.
Yeah. Far as I'm concerned, subclassing should *always* involve knowing the parent class. You needn't concern yourself with its implementation (I can subclass dict without caring about the details of hash randomization), but you have to be aware of its interface. And if you change the base class without changing your method chaining, you'd better be changing to a new base class that's equivalent to the old one. The advantage of super() is that you can substitute a subclass of X as a new base class without changing anything. But you need to be sure that the replacement base class obeys the Liskov Substitution Principle. ChrisA -- http://mail.python.org/mailman/listinfo/python-list