diff options
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; } |