super() is super [was Re: Calling dunder methods manually]
rosuav at gmail.com
Sat Apr 15 20:49:42 EDT 2017
On Sun, Apr 16, 2017 at 10:35 AM, Steve D'Aprano
<steve+python at pearwood.info> wrote:
>> eaisier to just write the path in long-form.
> Easier and wrong.
> If you have multiple inheritance, and don't use super(), then your code is
> buggy, whether you have realised it or not.
> Manually calling your parent class is only acceptable if you can absolutely
> guarantee that your class, all its parent classes, and all its subclasses
> will ONLY use single inheritance.
Plus, it's fragile in that it names the parent class everywhere.
def __init__(self): ...
def __add__(self, other): ...
def __or__(self, other): ...
def __add__(self, other):
Every method you subclass-and-call-parent needs to say the name of the
parent class. With super, they all just say super(). I know which one
I'd rather do.
More information about the Python-list