On Sun, Jul 14, 2019 at 7:14 PM Chris Angelico <ros...@gmail.com> wrote: > > On Mon, Jul 15, 2019 at 10:51 AM Paulo da Silva > <p_s_d_a_s_i_l_v_a...@netcabo.pt> wrote: > > > > Às 15:30 de 12/07/19, Thomas Jollans escreveu: > > > On 12/07/2019 16.12, Paulo da Silva wrote: > > >> Hi all! > > >> > > >> Is there any difference between using the base class name or super to > > >> call __init__ from base class? > > > > > > There is, when multiple inheritance is involved. super() can call > > > different 'branches' of the inheritance tree if necessary. > > > ... > > > > Thank you Jollans. I forgot multiple inheritance. I never needed it in > > python, so far. > > > > Something to consider is that super() becomes useful even if someone > else uses MI involving your class. Using super() ensures that your > class will play nicely in someone else's hierarchy, not just your own.
Just using super() is not enough. You need to take steps if you want to ensure that you class plays nicely with MI. For example, consider the following: class C1: def __init__(self, name): self._name = name class C2(C1): def __init__(self, name, value): super().__init__(name) self._value = value This usage of super is just fine for the single-inheritance shown here. But there are two reasons why this cannot be neatly pulled into an MI hierarchy. Can you spot both of them? -- https://mail.python.org/mailman/listinfo/python-list