On Jan 4, 9:03 pm, Ming <[EMAIL PROTECTED]> wrote: > 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: > > 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.
Yes, the MRO for new-style classes changed in Python 2.3, see http://www.python.org/download/releases/2.3/mro/ -- http://mail.python.org/mailman/listinfo/python-list