diff options
author | Raymond Hettinger <python@rcn.com> | 2004-06-05 06:16:22 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2004-06-05 06:16:22 (GMT) |
commit | f2c0830585a4c58c2e0cb6acbfc4efa628563c12 (patch) | |
tree | 41fdb4f638ed33aac170a1bc017eb20d08e745a4 /Python/ceval.c | |
parent | 0096e262ffe836b4c7511158678f9e257cc3a020 (diff) | |
download | cpython-f2c0830585a4c58c2e0cb6acbfc4efa628563c12.zip cpython-f2c0830585a4c58c2e0cb6acbfc4efa628563c12.tar.gz cpython-f2c0830585a4c58c2e0cb6acbfc4efa628563c12.tar.bz2 |
SF bug #963956: Bad error mesage when subclassing a module
Add a more informative message for the common user mistake of subclassing
from a module name rather than another class (i.e. random instead of
random.random).
Diffstat (limited to 'Python/ceval.c')
-rw-r--r-- | Python/ceval.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c index 2cebf44..2d60014 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -3922,6 +3922,15 @@ build_class(PyObject *methods, PyObject *bases, PyObject *name) } result = PyObject_CallFunction(metaclass, "OOO", name, bases, methods); Py_DECREF(metaclass); + if (result == NULL && PyErr_ExceptionMatches(PyExc_TypeError)) { + /* A type error here likely means that the user passed + in a base that was not a class (such the random module + instead of the random.random type). Help them out with + a more informative error message */ + PyErr_SetString(PyExc_TypeError, + "Error when calling the metaclass.\n" \ + "Make sure the base arguments are valid."); + } return result; } |