class super method
Michele Simionato
michele.simionato at gmail.com
Tue Apr 1 13:53:40 EDT 2008
On Apr 1, 4:41 am, Ed Leafe <e... at leafe.com> wrote:
> I disagree - super is quite elegant and dependable.
>
> Because Python support multiple inheritance, it is difficult to
> manually ensure that when augmenting a method that the correct
> superclass calls are made. super() handles that without having to
> guess as to what the correct inheritance hierarchy is.
>
> In my own project (Dabo), we use mixin classes liberally to provide
> consistent behavior across our UI classes. The use of super makes
> customizing __init__() behavior, for example, quite straightforward.
> The general form looks like:
>
> class DaboUIClass(dabo.ui.dControlMixin, someWxPythonClass):
> def __init__(self, *args, **kwargs):
> doOurCustomStuffBeforeTheSuperCall()
> super(DaboUIClass, self).__init__(*args, **kwargs)
> doOurCustomStuffAfterTheSuperCall()
>
> This has worked reliably for us in every place where we have used it.
> There's nothing dark and mysterious about it at all.
It is just that you did not run (yet) in a corner case of super. The
interesting question would be: did any of your users run into issues
using you library which is heavily relying on super? Especially when
composing it with their own classes?
I personally have changed my opinion about multiple inheritance over
the years.
At the beginning I thought it was a very cool idea, but now I think it
is a pretty bad idea. If I were to design a language, I would not
implement multiple inheritance. In Python I never use multiple
inheritance and actually I try very hard to avoid even single
inheritance, preferring composition whenever it is viable.
Michele Simionato
More information about the Python-list
mailing list