Class initialization with multiple inheritance

Joseph L. Casale jcasale at activenetwerx.com
Sat Jul 20 09:23:51 EDT 2019


-----Original Message-----
From: Barry Scott <barry at barrys-emacs.org> 
Sent: Tuesday, July 16, 2019 11:53 AM
To: Joseph L. Casale <jcasale at activenetwerx.com>
Cc: python-list at python.org
Subject: Re: Class initialization with multiple inheritance

> And here is the MRO for LeftAndRight.
>
> >>> import m
> LeftAndRight.__init__()
> Left.__init__()
> Right.__init__()
> CommonBase.__init__()
> >>> m.LeftAndRight.__mro__
> (<class 'm.LeftAndRight'>,
>  <class 'm.Left'>,
>  <class 'm.Right'>,
>  <class 'm.CommonBase'>,
>  <class 'object'>)
> >>> 

Thank you DL and Barry, that was very helpful.

It seems that if Base1, 2, or 3 creates its own arguments for the common base
class, this becomes notable and this one case becomes the arguments preserved
and sent to the base regardless of the order of Base1, 2 or 3 inside DerivedClassName.

Now if all three of Base1, 2, or 3 produce their own arguments (discarding those intended
from DerivedClassName, only one is chosen regardless of the order, indicating some
deterministic approach on the name possibly.

Presumably a choice had to be made as to how to handle this case (though the runtime
could have thrown), it would be enlightening to know what logic is utilized in this case.

Thanks a lot!
jlc



More information about the Python-list mailing list