MRO Error on Multiple Inheritance?

Ming minger at gmail.com
Sat Jan 5 21:59:59 EST 2008


Thanks for the all the replies.  CPP2e is the Second Edition of the
book "Core Python Programming."

On Jan 4, 6:13 pm, Ben Finney <bignose+hates-s... at benfinney.id.au>
wrote:
> Ming <min... at gmail.com> writes:
> > I'm working through Wesley Chun's CPP2e and got this error on 13.11.1,
> > pp 548 where his interpreter snippet shows no problems:
>
> I don't know what a "CPP2e" is. Is it a book? Can you give the ISBN?
>
>
>
> > ActivePython 2.5.1.1 (ActiveState Software Inc.) b
> > Python 2.5.1 (r251:54863, May  1 2007, 17:47:05) [
> > win32
> > Type "help", "copyright", "credits" or "license" f
> > >>> class A(object): pass
> > ...
> > >>> class B(A): pass
> > ...
> > >>> class C(B): pass
> > ...
> > >>> class D(A, B): pass
> > ...
> > Traceback (most recent call last):
> >   File "<stdin>", line 1, in <module>
> > TypeError: Error when calling the metaclass bases
> >     Cannot create a consistent method resolution
> > order (MRO) for bases A, B
>
> > (I submitted the problem to the author but I'm not sure I'll ever hear
> > back.)  I'm guessing that this kind of diamond inheritance is
> > prohibited by the interpreter, and that his lack of error messages
> > from the interpretation is due to actually leaving out the "class
> > B(A): pass"  Can someone shed light?  Thanks.
>
> That's not an example of diamond inheritance
> <URL:http://en.wikipedia.org/wiki/Diamond_problem> because classes A
> and B are not distinct classes with a *common* base. Instead, they're
> in a direct parent-child relationship.
>
> So there's no sense in defining class D to inherit from both A *and*
> B. To get a descendent of both those classes, inheriting from B is
> sufficient. It should rather be::
>
>     class D(B): pass
>
> --
>  \     "Pinky, are you pondering what I'm pondering?" "Uh, I think so, |
>   `\     Brain, but we'll never get a monkey to use dental floss."  -- |
> _o__)                                            _Pinky and The Brain_ |
> Ben Finney




More information about the Python-list mailing list