[Python-bugs-list] [ python-Bugs-699934 ] Obscure error message
SourceForge.net
noreply@sourceforge.net
Wed, 12 Mar 2003 05:01:23 -0800
Bugs item #699934, was opened at 2003-03-08 12:29
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=699934&group_id=5470
Category: Python Interpreter Core
Group: Python 2.3
>Status: Open
Resolution: Fixed
Priority: 5
Submitted By: Bjorn Pettersen (bpettersen)
Assigned to: Raymond Hettinger (rhettinger)
Summary: Obscure error message
Initial Comment:
>>> class A(object):
... m = 1
...
>>> class B(A): pass
...
>>> class C(A): pass
...
>>> class D(A,B): pass
...
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: MRO conflict among bases A, B
I happen to know what MRO stands for, but probably
most people that made the typo I did in the diamond
inheritance graph will have no idea what they did wrong...
How about "One of the declared superclasses A, B
inherits from the other, the method resolution order
(MRO) would therefore be undefined. Cannot create
class."
-- bjorn
----------------------------------------------------------------------
>Comment By: Michael Hudson (mwh)
Date: 2003-03-12 13:01
Message:
Logged In: YES
user_id=6656
Unfortunately the new error message makes no sense when you
get it by rearranging __bases__.
----------------------------------------------------------------------
Comment By: Raymond Hettinger (rhettinger)
Date: 2003-03-12 04:38
Message:
Logged In: YES
user_id=80475
Fixed. See:
Objects/typeobject.c 2.216
Lib/test/test_descr.py 1.187
----------------------------------------------------------------------
Comment By: Bjorn Pettersen (bpettersen)
Date: 2003-03-12 02:50
Message:
Logged In: YES
user_id=556638
Even better. If I were to suggest anything, it would be to
add "(lookup)" after "resolution" since that seems to be the
more frequently used terminology -- not a big issue though.
----------------------------------------------------------------------
Comment By: Raymond Hettinger (rhettinger)
Date: 2003-03-12 01:29
Message:
Logged In: YES
user_id=80475
I don't think the first part of the sentence is accurate.
MRO conflicts can arise for less straight-forward reasons.
How about:
"Cannot create class. Superclasses A, B have conflicting
inheritance trees which leave the method resolution order
(MRO) undefined."
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=699934&group_id=5470