The problem people have with super
is more a problem of multiple inheritance. So it is a little unfair to blame super
. Without super
multiple inheritance is even worse. Michele Simionato nicely wrapped this up in his blog article on super:
On the other hand, one may wonder if
all super warts aren't hints of some
serious problem underlying. It may
well be that the problem is not with
super, nor with cooperative methods:
the problem may be with multiple
inheritance itself.
So the main lesson is that you should try to avoid multiple inheritance, but of course there are legitimate use cases.
In the interest of consistency I always use super, even if for single inheritance it does not really matter (apart from the small advantage of not having to now the parent class name). In Python 3+ super
is more convenient, so there one should definitely use super.